Yii2: クエリビルダで前方一致検索

Yii2のクエリビルダを使ってWHERE句のLIKEを作る時、このように書くと


$rows = (new \yii\db\Query())
    ->select()
    ->from('user')
    ->where(['like', 'name', 'Smith'])
    ->limit(10)
    ->all();

生成されるSQLはこうなる。


SELECT * FROM `user` WHERE `name` LIKE '%Smith%';

LIKE条件の値の前後に’%’が付与されるので部分一致となる。
前方一致や後方一致にしたいときは文字列形式でWHEREを書く。


$rows = (new \yii\db\Query())
    ->select()
    ->from('user')
    ->where('name LIKE :name', [':name' => 'Smith%']) // 前方一致
    ->limit(10)
    ->all();

生成されるSQLは部分一致となる。


SELECT * FROM `user` WHERE `name` LIKE 'Smith%';

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です