Неявное связывание в 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