Eloquent を実践的に使い始めたばかりなので初歩的なところですが、複合条件を組み立てるところについてメモ。
やりたいこととしては、 WHERE A AND B AND (C OR D)
という条件。
$departName = [
'総務部',
'営業部',
];
$dataRows = $dbConnect->table('hoge_db')
->where(
[
['user_id', '>', 23],
['age', '<', 42],
]
)
->where(function($query) use ($departName) {
$query->orWhere('depart_name', '=', $departName[0])
->orWhere('depart_name', '=', $departName[1]);
})
->select(
'fuga_db.name',
'fuga_db.attribute',
'fuga_db.parameter'
)
->join('fuga_db', 'hoge_db.user_id', '=', 'fuga_db.employee_id')
->get();
$dbConnect
にDB接続情報が入ったインスタンスがあるという前提ですが、イメージとしてこのようなコードです。
肝は以下。
OR
条件の括弧の中身を where()
メソッド の中にクロージャとして無名関数で記述する。orWhere()
メソッド を足していく。use
句 でクロージャ内に持ち込むこれで意図した挙動になることを確認しました。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント