Это не точный вывод вашего опубликованного запроса, потому что я вижу некоторые синтаксические ошибки в заключительных скобках запроса.поэтому я не могу полностью понять ваш запрос.
Но так как вы указали, что вам трудно понять, как использовать and
и or
в query builder
, я подумал, что это может помочь.
DB::table('banners')
->where([ // -|
['valid_from', '<=', '2018-10-03 13:20:52'], // AND |
['valid_to', '>=', '2018-10-03 13:20:52'], // AND |
['channel', 'en-us'], // AND | OR
['language', 'en'] // AND |
])->orWhere([ // _|____
['valid_from', '<=', '2018-10-03 13:20:52'], // AND | OR
['valid_to', null] // AND _|____
])->orWhereNull('channel') // _| OR
->orWhereNull('language') // _| OR
->get();
Удачи