В laravel я могу использовать многие правила where в виде массива, который запускает один запрос к базе данных, используя метод laravel eloquent where
для получения необходимого результата.
Код:
$where = [];
$where[] = ['user_id', '!=', null];
$where[] = ['updated_at', '>=', date('Y-m-d H:i:s')];
if($request->searchTerm) {
$where[] = ['title', 'like', '%' . $request->searchTerm . '%'];
}
Model::where($where)->get();
Часть вопроса:
Теперь мне нужно использовать метод Laravel Eloquent whereIn
с параметрами массива, чтобы получить необходимый результат одним запросом.
Я пытался цикл метод, но с большим количеством запросов к базе данных.
Код:
$model = new Model;
$whereIn = [];
$whereIn[] = ['date', '>=', Carbon::now()->subDays(10)];
$whereIn[] = ['user_role', 'candidate'];
if (!empty($scope) && is_array($scope)) {
$whereIn[] = ['user_id', $scope];
}
if(is_array($employment) && !empty($employment)) {
$whereIn[] = ['employment', $employment];
}
if(is_array($experience) && !empty($experience)) {
$whereIn[] = ['experience', $experience];
}
foreach ($whereIn as $v) {
$model = $model->whereIn($v[0], $v[1]);
}
dump($model->get());
Сначала я устал $model->whereIn($whereIn)->get()
но это ошибка возврата. Возможно ли получить результаты одним запросом, используя whereIn
без зацикливания?
Примечание: Мой $whereIn
массив будет динамическим массивом!