こんにちはみんな私は1つのことに混乱しています
次のクエリをyii2
で記述したいのですが、予期した出力を取得できません
SELECT * FROM user where category_id=5 ORDER BY Rand() LIMIT 4
そのために私は以下を行いました
$data= User::find()->where(['category_id'=> 5])->orderBy(['Rand()'])->limit(4);
しかし、それは次のようなコマンドを生成します
SELECT * FROM `user` WHERE `category_id`=5 ORDER BY `0` LIMIT 4
有効なmysqlステートメントではないので、クエリを正しく行うにはどうすればよいですか?
私の目的は、user
テーブルからランダムな4つのレコードを取得することです。
それを yii\db\Expression にラップして、エスケープを防ぎ、配列部分を削除します。
use yii\db\Expression;
...
$query = User::find()
->where(['category_id' => 5])
->orderBy(new Expression('Rand()'))
->limit(4);
私は実際にはyii2クエリビルダーの専門家ではありませんが、順序が役立つように指定してください
$data= User::find()->where(['category_id'=> 5])->orderBy(['Rand()' => SORT_DESC])->limit(4);