// 'name'カラムが'名前1'のレコードを取得したい場合
$items = Item::where('name', '名前1')->first();
// A and B
// 'name'カラムが'名前1'でかつ'name'カラムが'名前2'のレコードを取得したい場合
$items = Item::where('name', '名前1')->where('name', '名前2')->first();
// A or B
// 'name'カラムが'名前1'のレコードもしくは'name'カラムが'名前2'のレコードを取得したい場合
$items = Item::where('name', '名前1')
->orWhere('name', '名前2')
->first();
// (A and B) or C (andが強いため特別な処理は必要ない)
// 'name'カラムが'名前1'かつ'name'カラムが'名前2'のレコードもしくは'name'カラムが'名前3'のレコードを取得したい場合
$items = Item::where('name', '名前1')
->where('name', '名前2')
->orWhere('name', '名前3')
->first();
// A or (B and C)
// 'name'カラムが'名前1'かつ'name'カラムが'名前2'のレコードもしくは'name'カラムが'名前3'のレコードを取得したい場合
$items = Item::where('name', '名前1')
->orWhere('name', '名前2')
->where('name', '名前3')
->first();
// A and (B or C)
// 'name'カラムが'名前1'のレコード、かつ'name'カラムが'名前2'もしくは'name'カラムが'名前3'のレコードを取得したい場合
$items = Item::where('name', '名前1')
->where(function($query) {
$query->where('name', '名前2')
->orwhere('name', '名前3')
})
->first();
// (A and B) or (C and D)
$items = Item::where('name', '名前1')
->where('name', '名前2')
->orWhere(function($query) {
$query->where('name', '名前2')
->where('name', '名前3')
})
->first();
// (A or B) and (C or D)
$items = Item::where(function($query) {
$query->orWhere('name', '名前1')
->orWhere('name', '名前2')
->where(function($query) {
$query->orWhere('name', '名前2')
->orWhere('name', '名前3')
})
->first();
// 関数を使う場合で変数を使いたい場合はuseを使う
$items = Item::where('name', '名前1')
->where(function($query)use($user) {
$query->where('name', '$user->name')
->orwhere('name', '$user->name')
})
->first();