扁平化加入雄辩

时间:2016-02-01 21:21:19

标签: laravel eloquent laravel-5.2

如果我想加入两个表,我可以这样做:

$books = App\Book::with('author')->get();

问题在于结果有点嵌套。例如。如果我想获得作者的DOB,我必须这样做:

foreach ($books as $book) {
    echo $book->author->dob;
}

但是,如果我想要能够做到这一点怎么办?:

foreach ($books as $book) {
    echo $book->dob;
}

我怎么可能这样做?我想可能存在冲突dob是book表和author表中的列,并且author_dob表示会更好但是我们假设没有' ta冲突。

我想一个视图可以做到这一点,但有没有办法在Laravel中这样做而无需创建视图?

1 个答案:

答案 0 :(得分:2)

$books = DB::table('books')
            ->join('authors', 'authors.id', '=', 'books.author_id')->get()

实际上你可以用雄辩的方式做同样的事情。这样,您就可以访问Book模型文件中的所有函数和额外参数

App\Book::join('authors', 'authors.id', '=', 'books.author_id')->get()

您可能希望使用leftJoin()代替join()