如何在这些实体之间建立Laravel关系?

时间:2014-07-01 14:32:49

标签: php laravel orm

我的数据库中有三个表:UsersBooksReadingReading的结构是:

  

id,user_id,book_id

现在,我需要访问用户正在阅读的所有图书。

首先,我想知道哪种关系,一对多,多对多,多对多等等。我需要在每个模型中指定什么?我的意思是,在用户模型hasMany('Reading')或其他任何内容中。

我希望使用以下内容进行访问:Auth::user()->reading()->books()->get()或类似内容。

1 个答案:

答案 0 :(得分:1)

许多用户可以阅读一个User可以阅读多本书而一个Book的关系是Many-to-Many关系。

因此,要在Laravel中定义这样的关系,您应该使用belongsToMany方法:

class User extends Eloquent
{
    function books()
    {
         return $this->belongsToMany("Book", "Reading", "user_id", "book_id");
    }
}

class Book extends Eloquent
{
    function users()
    {
         return $this->belongsToMany("User", "Reading", "book_id", "user_id");
    }
}

$books = Auth::user()->books;

请注意,您不需要调用方法->books(),但使用属性->books,否则您必须像Auth::user()->books()->get()一样调用它。