Holen Sie sich Daten von der Datenbank mithilfe eines Arrays in yii
-
26-12-2019 - |
Frage
Ich bin neu bei yii.Mein Problem ist, ich habe ein Array $hometeamid
Das enthält alle IDs, die ich zum Anzeigen von Details benötige.Wie kann ich die Daten bekommen?Bitte hilft mir jemand
Ich habe versucht $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>
funktioniert aber nicht.Es werden leere Felder angezeigt.
Lösung
Am besten führen Sie addInCriteria mit CDbCriteria oder einfach mit createCommand aus, aber überprüfen Sie vorher bitte Ihre Abfrage auf der phpmyadmin/navicate/mysql-Workbench usw.manuell (gibt es ein Ergebnis zurück oder nicht?)
$homeTeamIds=['1','2','3','4'];
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$homeTeamIds,'OR'); //matching any of your homeTeadIds
$result = Event::model()->findAll($criteria);
ODER
$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();
Andere Tipps
Verwenden Sie findByAttributes nicht, wenn Sie die ID als Primärschlüssel in Ihrer Datenbank festlegen.
Beispiel:
$mod = Event::model()->findbyPk($no);
Sie können verwenden CDb-Kriterien'S addInCondition() Methode, um alle Zeilen mit Werten zu finden, die mit Elementen in einem Array übereinstimmen. Beispielsweise sollte so etwas funktionieren (nicht getestet):
$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);
Es gibt sogar ein Beispiel für die Verwendung von addInCondition oben auf der CDbCriteria-Referenzseite: http://www.yiiframework.com/doc/api/1.1/CDbCriteria
Verarbeiten Sie Ihr Array zunächst in eine durch Kommas getrennte Zeichenfolge, die als bedingter Wert in der SQL-Abfrage verwendet wird
$idString = implode(', ', $hometeamid);
Dann legen Sie die Schnur hinein IN
Klausel in einer SQL-Abfrage.
$sql = "SELECT *
FROM event
WHERE id IN ($idString)"
$mod = Yii::app()->db->createCommand($sql)->queryAll();
nach der Ausführung von queryAll
Mit dieser Methode erhalten Sie die zugehörigen Zeilen als resultierendes Array