此集合实例上不存在Property [id]

Reg*_*ith 7 php laravel

我正在尝试创建编辑页面,这个错误不断弹出 Whoops, looks like something went wrong. Property [id] does not exist on this collection instance. 我到目前为止所做的事情
这是我的Route

Route::get('book/edit/{id}', 'BookController@edit')->name('admin.book.edit');
Route::PATCH('book/edit/{id}', 'BookController@update')->name('admin.book.edit');
Run Code Online (Sandbox Code Playgroud)

这是我的控制器

$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));
Run Code Online (Sandbox Code Playgroud)

最后查看文件在表单部分中有以下内容

{{ Form::model($books, ['route' => ['admin.book.edit', $books->id], 'class' => 'form-horizontal', 'role' => 'form', 'method' => 'PATCH']) }}
<!--form content-->
{{ Form::close() }}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢

dpa*_*oli 22

您必须检索一个first()没有集合的记录get(),即:

$book = $this->bookModel
    ->join('author', 'author.id', '=', 'book.author_id')
    ->where('book.id', '=', $id)
    ->select('book.*', 'author.name_1 as authorname1')
    ->first();
Run Code Online (Sandbox Code Playgroud)

请在其余的代码中$books与sobstitute $book.


May*_*eyz 6

错误在这里:

$books->id
Run Code Online (Sandbox Code Playgroud)

当你使用时get()你会得到一个集合并且$books是一个集合。在这种情况下,您需要迭代它以获取其属性:

@foreach ($books as $book)
    {{ $book->id }}
@endforeach
Run Code Online (Sandbox Code Playgroud)