Estoy tratando de crear una página de edición y este error sigue apareciendo Whoops, looks like something went wrong. Property [id] does not exist on this collection instance. Lo que he hecho hasta ahora
Esta es mi Route
Route::get('book/edit/{id}', 'BookController@edit')->name('admin.book.edit'); Route::PATCH('book/edit/{id}', 'BookController@update')->name('admin.book.edit');este es mi controlador
$books = $this->bookModel ->join('author', 'author.id', '=', 'book.author_id') ->where('book.id', '=', $id) ->select('book.*', 'author.name_1 as authorname1') ->get(); return view('backend.book.edit', compact('books', $books));Finalmente, ver el archivo tiene lo siguiente en forma de parte
{{ Form::model($books, ['route' => ['admin.book.edit', $books->id], 'class' => 'form-horizontal', 'role' => 'form', 'method' => 'PATCH']) }} <!--form content--> {{ Form::close() }}Cualquier ayuda será apreciada. Gracias
Tienes que recuperar un registro con first() no una colección con get() , es decir:
$book = $this->bookModel ->join('author', 'author.id', '=', 'book.author_id') ->where('book.id', '=', $id) ->select('book.*', 'author.name_1 as authorname1') ->first(); Sustituya $books por $book en el resto del código también.
El error está aquí:
$books->id Cuando usas get() obtienes una colección y $books es una colección. En este caso, debe iterar sobre él para obtener sus propiedades:
@foreach ($books as $book) {{ $book->id }} @endforeachYo también tuve un error similar donde estaba usando una relación elocuente, y el problema era que estaba usando return $this->hasMany(ClassName::class); Pero la relación era uno a uno por lo que la solución al problema es return $this->hasOne(ClassName::class); .
Aquí, en la muestra anterior, el primer segmento de código devolverá una matriz de objetos que desglosarán el flujo de relación elocuente en código elocuente encadenado como $firstChain->middleChain->requiredData
Aquí, si middleChain tiene arrayOfObjects, causa el error anterior que dice que la property doesn't exist .
Tenga cuidado al usar una relación elocuente para mencionar correctamente el tipo de relación que tiene