Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 关于归属关系的3个表_Laravel_Eloquent - Fatal编程技术网

Laravel 关于归属关系的3个表

Laravel 关于归属关系的3个表,laravel,eloquent,Laravel,Eloquent,根据Laravel的官方文件,我发现: $books = App\Book::with('author.contacts')->get(); 在这种情况下,假设我们有一个这样的结构: books books_authors authors contacts books_authors_contacts 这只是一个低血压的案例,但我想了解更多的信息:如果我想检索这本特定书籍的所有作者联系人,想象一下,对于一本特定的书籍,多个作者可能有多个联系人,这些联系人通过作者和书籍链接,就像实体bo

根据Laravel的官方文件,我发现:

$books = App\Book::with('author.contacts')->get();
在这种情况下,假设我们有一个这样的结构:

books
books_authors
authors
contacts
books_authors_contacts
这只是一个低血压的案例,但我想了解更多的信息:如果我想检索这本特定书籍的所有作者联系人,想象一下,对于一本特定的书籍,多个作者可能有多个联系人,这些联系人通过作者和书籍链接,就像实体books\u authors\u contacts所说的那样

是否有可能通过Laravel以一种归属关系急切地加载来检索它

通过使用下面的示例,它将只检索作者的所有联系人,无论该书是什么


提前谢谢你

有一些技巧可以以非常复杂的方式获得此功能,请参见。从更实际的意义上讲,当这些案例出现在专业环境中时,您通常会使用一种方法来聚合这些数据。这可以通过多种方式完成,我觉得这是一种相当容易理解的方法

public class Book
{
    public function contacts()
    {
        $contacts = new Collection();

        $this->authors->each(function(Author $author) use($contacts) {
            $contacts->concat($author->contacts);
        })

        return $contacts;
    }
}
当然,对于快速加载,您必须记住包含整个结构。对于更多的拉拉威尔方法,接触可以作为一个雄辩的变异体

$book = App\Book::with('authors.contacts')->find(1);
$contacts = $book->authors();