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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top