YIIの配列を使用してDBからデータを取得します
-
26-12-2019 - |
質問
im yiiに新たに。私の問題は、私が詳細を表示するために必要なすべてのIDを含む配列$hometeamid
を持っています。データを取得する方法plz誰かが私を助けてくれる
私は
$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>
.
が機能しない。空白のフィールドが表示されています。
解決
CDBcriteriaまたはSimple CreateCommandのようなwiith cdbcriteriaまたはSimple CreateCommandを行うのが最善ですが、PhpMyAdmin / Navicate / MySQL Workbenchなどでクエリを手動で確認してください(結果が返されますか?)
$homeTeamIds=['1','2','3','4'];
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$homeTeamIds,'OR'); //matching any of your homeTeadIds
$result = Event::model()->findAll($criteria);
.
または
$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();
. 他のヒント
は、DBの主キーとしてIDを設定した場合は、FindByAttributesを使用しないでください。
例:
$mod = Event::model()->findbyPk($no);
. cdbcriteria 's addincondition()アレイ内の値に一致する値を持つすべての行を見つけるための方法、例えばこのようなものです。働くべき(テストされていない):
$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);
.
CDBCriteriaリファレンスページの上部にあるAddinConditionを使用した例でさえあります。 http://www.yiframework.com/doc/api/1.1/cdbcriteria
最初にあなたの配列をSQL照会
の条件値として使用されるカンマ区切り文字列にプロセスします。$idString = implode(', ', $hometeamid);
.
その文字列をSQLクエリでIN
句の中に配置します。
$sql = "SELECT *
FROM event
WHERE id IN ($idString)"
$mod = Yii::app()->db->createCommand($sql)->queryAll();
.
queryAll
メソッドを実行した後、結果の配列
所属していません StackOverflow