Laravel中的一对多关系不起作用

时间:2016-02-09 07:59:30

标签: laravel model controller one-to-many

我有两张表BooksAuthors,其中一本书可以由很多作者(一对多)发表 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

但这不起作用。

1 个答案:

答案 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()