Ottieni dati da DB usando un array in yii
-
26-12-2019 - |
Domanda
sono nuovo a yii.Il mio problema è, ho un array $hometeamid
che contiene tutto l'id che ho bisogno di visualizzare i dettagli.Come posso ottenere i dati.Plz qualcuno mi aiuta a farlo
Ho provato
$mod = Yii::app()->db->createCommand('SELECT * FROM event WHERE id = 1432201 or id = 1432208')->queryAll();
$no=1432201;
$mod = Event::model()->findByAttributes(array('id' => $no));<br>
.
ma non funziona.I campi vuoti stanno mostrando.
Soluzione
I migliori da fare addincrediteria wiith cdbcriteria o semplice createcommand come, ma prima di farlo controlla la tua query su PhpMyAdmin / Navica / MySQL Workbench, ecc. Manualmente (è il risultato di ritorno o meno?)
$homeTeamIds=['1','2','3','4'];
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$homeTeamIds,'OR'); //matching any of your homeTeadIds
$result = Event::model()->findAll($criteria);
.
o
$ids = implode(', ', $homeTeamIds);
$sql = "SELECT * FROM event WHERE id IN ($ids)" // like where id IN(1,2,3,4)
$result = Yii::app()->db->createCommand($sql)->queryAll();
. Altri suggerimenti
DONT UTILIZZARE CHEADBATIBUTE se si imposta l'ID come chiave primaria nel DB.
Esempio:
$mod = Event::model()->findbyPk($no);
. È possibile utilizzare cdbcriteria s addincondition () metodo per trovare tutte le righe con valori che corrispondono agli elementi in un array, ad esempio qualcosa del generedovrebbe funzionare (non testato):
$hometeamid = array(
'1432201',
'1432208',
// ... etc... all the id's you want to show
);
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$hometeamid,'OR');
$mod = Event::model()->findAll($criteria);
.
C'è persino un esempio utilizzando l'addincondition nella parte superiore della pagina di riferimento del cdbcriteria: http://www.yiiframework.com/doc/api/1.1/cdbcriteria
Prima elabora il tuo array in una stringa separata da virgola che viene utilizzata come valore condizionale nella query SQL
$idString = implode(', ', $hometeamid);
.
Quindi posizionare quella stringa all'interno della clausola IN
in query SQL.
$sql = "SELECT *
FROM event
WHERE id IN ($idString)"
$mod = Yii::app()->db->createCommand($sql)->queryAll();
.
Dopo l'esecuzione del metodo queryAll
riceverai le righe correlate come array risultante