Php Laravel-如何在同一查询中使用And和OR嵌套where

Php Laravel-如何在同一查询中使用And和OR嵌套where,php,mysql,eloquent,laravel-5.2,Php,Mysql,Eloquent,Laravel 5.2,我有一个问题 $updates = FolderLocker::where('created_at', 'like', $date . '%') ->orWhere('date_forwarded', 'like', $date . '%') ->orWhere('date_locked', 'like', $date . '%') ->orWhere('date_completed

我有一个问题

$updates = FolderLocker::where('created_at', 'like', $date . '%')
                ->orWhere('date_forwarded', 'like', $date . '%')
                ->orWhere('date_locked', 'like', $date . '%')
                ->orWhere('date_completed', 'like', $date . '%')
                ->whereIn('videographer_id', $videographerArray)
                ->orderBy('client_id', 'DESC')

                ->toSql();
它产生

select * from `folder_lockers` where `created_at` like ? or `date_forwarded` like ? or `date_locked` like ? or `date_completed` like ? and `videographer_id` in (?, ?, ?, ?, ?, ?, ?) order by `client_id` desc

如何使
where
子句成为主子句,然后使另一个和中的所有
子句成为主子句?

您可以将where分组到一个闭包中,如下所示:

$updates = FolderLocker::whereIn('videographer_id', $videographerArray)
               ->where(function ($query) use ($date) {
                   $query->where('created_at', 'like', $date . '%')
                       ->orWhere('date_forwarded', 'like', $date . '%')
                       ->orWhere('date_locked', 'like', $date . '%')
                       ->orWhere('date_completed', 'like', $date . '%');
               })                
               ->orderBy('client_id', 'DESC');

您可以在闭包中对位置进行分组,如下所示:

$updates = FolderLocker::whereIn('videographer_id', $videographerArray)
               ->where(function ($query) use ($date) {
                   $query->where('created_at', 'like', $date . '%')
                       ->orWhere('date_forwarded', 'like', $date . '%')
                       ->orWhere('date_locked', 'like', $date . '%')
                       ->orWhere('date_completed', 'like', $date . '%');
               })                
               ->orderBy('client_id', 'DESC');