Неявное связывание в laravel (5.6) возвращает пустой объект

Я пытаюсь использовать метод "show" в контроллере, но когда он возвращает пустой объект.

С этой точки зрения:

@foreach ($usuarios as $usuario2)
  <h2>{{$usuario2->nombre}}</h2>
  <a href="prurequests/{{$usuario2->id}}">ver mas2...</a>
@endforeach

Через этот маршрут:

Route::resource('/prurequests','PruebasControllers\PrurequestsController'); 

Для метода этого контроллера:

public function show(Usuario2 $usuario2)  // Ruta con implicing biding
 {
     return $usuario2;
 }

Это модель:

class Usuario2 extends Model
{
    Protected $fillable = ['nombre'];
}

Я пытался с этим, и это работает

Посмотреть:

@foreach ($usuarios as $usuario2)
  <h2>{{$usuario2->nombre}}</h2>
  <a href="impli/{{$usuario2->id}}">ver mas...</a>
  <a href="prurequests/{{$usuario2->id}}">ver mas2...</a>
@endforeach

маршрут

Route::get('impli/{usuario2}', function 
(fractalwebpage\PruebasModelos\Usuario2 $usuario2) {
  return $usuario2;
});

Это принесет мне данные, которые я должен был поместить в модель и. Это нужно сделать, но через контроллер.

2 ответа

Решение

По умолчанию Laravel использует последний сегмент URL в качестве заполнителя запроса маршрута ресурса, поэтому в методе контроллера вы можете внедрить модель, но с другим именем. public function show(Usuario2 $prurequests)

Но более определенным решением было бы просто изменить параметр в определении маршрута.

Route::resource('/prurequests','PruebasControllers\PrurequestsController', ['parameters' => ['prurequests' => 'usuario2']]); 

Таким образом, вы можете продолжать использовать ваши контроллеры, как они в настоящее время

public function show(Usuario2 $usuario2)  // Ruta con implicing biding
{
   return $usuario2;
}

Когда вы пытаетесь неявное связывание в контроллере ресурсов, то во время создания контроллера ресурсов вы должны добавить --model вариант

php artisan make:controller PrurequestsController --resource --model=Usuario2

Указание модели ресурсов Если вы используете привязку модели маршрута и хотите, чтобы методы контроллера ресурсов указывали на экземпляр модели, вы можете использовать опцию --model при генерации контроллера:

Проверьте детали https://laravel.com/docs/5.6/controllers

Другие вопросы по тегам