Почему в Laravel модели по умолчанию User, метод show устанавливается с помощью «User $ user»? - PullRequest
0 голосов
/ 25 апреля 2020

Почему метод show в модели User по умолчанию поставляется с User $user в качестве аргумента?

Обычно я заменяю его на $id, чтобы найти пользователя с return User::find($id); , но означает ли это, что есть другой способ получения пользовательских данных?

    /**
     * Display the specified resource.
     *
     * @param  \App\User  $user
     * @return \Illuminate\Http\Response
     */
    public function show(User $user)
    {
        //
    }

=== РЕДАКТИРОВАТЬ ===

Route::get('/users/{id}', 'UserController@show');

=== РЕДАКТИРОВАТЬ ===

Если я заменим {id} на {user}, как мне установить переменную $user?

    async getUsers () {
      let $user = ?
      await axios.get('/show/'+ $user)
        .then(function (response) {
          console.log(response);
        })
        .catch(function (error) {
          console.log(error);
        });
    }

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Это так же просто, как и много

Route::get('/users/{user}', 'UserController@show');

Если вы используете

Route::get('/users/{id}', 'UserController@show');

Затем вы пишете дополнительный код, например

User::find($id);

Так что по умолчанию просто и меньше кода

1 голос
/ 25 апреля 2020

Это называется привязкой маршрута: см. Документы здесь . Laravel автоматически заменит ваш параметр маршрута.

Laravel автоматически разрешает модели Eloquent, определенные в маршрутах или действиях контроллера, чьи имена переменных с подсказками типов соответствуют имени сегмента маршрута. Например:

Route::get('api/users/{user}', function (App\User $user) {
   return $user->email;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...