#php #laravel
#php #laravel
Вопрос:
я работаю над небольшим проектом с использованием Laravel и делаю все возможное, чтобы понять документацию Laravel для создания хороших решений, но на этот раз мне было сложно понять предложение WHEN
может ли кто-нибудь объяснить мне этот код, приведя пример:
$role = $request->input('role');
$users = DB::table('users')
->when($role, function ($query, $role) {
return $query->where('role_id', $role);
})
->get();
Документы:https://laravel.com/docs/7.x/queries#conditional-clauses
Также я хотел бы знать, что означает второй параметр [] in the input function
request()->input('field', []);
Комментарии:
1. В документах говорится: «Метод when выполняет данное закрытие только тогда, когда первый параметр имеет значение true. Если первый параметр равен false, закрытие не будет выполнено.». Мне кажется, это очень ясно. В этом случае, если
$role
вычисляется какtrue
, тоwhere
добавляется к запросу.
Ответ №1:
Пока переменная role равна true, этот запрос будет выполняться:
return $query->where('role_id', $role);
Что касается вашего второго вопроса, если параметр запроса ‘field’ не заполнен, значение по умолчанию будет установлено следующим образом: [].
Другой пример:
$foo = $request->input('test', 69);
Если параметр запроса test не заполнен, параметр foo будет равен 69.