我有两张表Books
和Authors
,其中一本书可以由很多作者(一对多)发表
Book
模型
class Book extends Model
{
public function authors()
{
return $this->hasMany(Author::class);
}
}
Author
型号
class Auther extends Model
{
public function books()
{
return $this->belongsTo(Book::class);
}
}
控制器
public function index()
{
$book = Book::all();
return view('books.index',[
'all_books' => $book,
]);
}
视图
@foreach($all_books as $book)
{{$book -> title}}
{{$book -> date_of_publish}}
{{$book -> add_by}}
<!--show author name-->
{{$book -> books ->name}}
@endforeach
但这不起作用。
答案 0 :(得分:0)
原谅我但我还是无法发表评论,因为shempignon说你需要调用$ book-&gt; authors()方法,因为所有$ all_books都是Books :: class的对象,这只有1个方法authors()
所以要获得作者姓名,你必须这样做
@foreach($all_books as $book)
{{$book->title}}
{{$book->date_of_publish}}
{{$book->add_by}}
<!--show author name-->
@foreach($book->author as $author)
{{$author->name}}
@endforeach
@endforeach
为了获得每位作者的书,你必须以另一种方式来完成这本书$ author-&gt; books()