Мне нужна помощь, чтобы понять предложение WHEN

#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.