我正在尝试创建编辑页面,此错误不断弹出
print-optimal
到目前为止我做了什么
这是我的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');
最后,视图文件在表单部分
中有以下内容$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));
任何帮助将不胜感激。感谢
答案 0 :(得分:16)
您必须使用<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.major.minor.version}</artifactId>
<version>${spark.version}</version>
</dependency>
检索一条记录而不是first()
的集合,即:
get()
请在其余代码中使用$book = $this->bookModel
->join('author', 'author.id', '=', 'book.author_id')
->where('book.id', '=', $id)
->select('book.*', 'author.name_1 as authorname1')
->first();
代理$books
。
答案 1 :(得分:1)
错误在于:
$books->id
当您使用get()
时,您会收到一个集合,而$books
是一个集合。在这种情况下,您需要迭代它以获取其属性:
@foreach ($books as $book)
{{ $book->id }}
@endforeach
答案 2 :(得分:1)
我认为您的代码需要更新如下:
$books = $this->bookModel
->join('author', 'author.id', '=', 'book.author_id')
->where('book.id', '=', $id)
->select('book.*', 'author.name_1 as authorname1')
->first();
return view('backend.book.edit', compact('books'));
希望这对你有用!
答案 3 :(得分:1)
我在使用 eloquent关系时也有类似的错误,
问题是我使用的是 return $this->hasMany(ClassName::class);
但是关系是一对一的,所以问题的解决方案是return $this->hasOne(ClassName::class);
。
在上面的示例中,第一个代码段将返回对象数组,这些对象将破坏链接的 eloquent 代码中的 eloquent 关系流,如 $firstChain->middleChain->requiredData
这里如果 middleChain
有 arrayOfObjects 它会导致上面的错误说 property doesn't exist
。
在使用 eloquent关系时要小心,正确提及它所具有的关系类型
答案 4 :(得分:0)
就像上面提到的Mayank一样,您可以获得一个收藏集,因此您渴望遍历FIELDS以获得所需的正确字段。我在对我有用的语法中给出了相同的答案
foreach ($books as $book) {
$book_id = $book->id
}