获取Eloquent中所有相关模型实例的明确列表

时间:2017-01-30 12:14:24

标签: laravel eloquent distinct

我有两个Eloquent模型(比如:书籍和作者),它们具有一对多关系(一个作者可以有很多书,每本书只有一个作者)。该数据库还包含没有书籍的作者。我想检索所有具有Book-whitout且具有重复作者的作者的列表。

目前我遍历所有Book实例并将作者添加到列表中(如果它尚未出现在列表中):

$books = Books::all();
$list = [];
foreach ($books as $book) {
    if (! in_array($book->author, $list) ) {
        array_push($list, $book->author);
    }
}

我想知道是否有一种更聪明的方法可以实现这一点,即一种重新生成数据库查询数量的方法。

2 个答案:

答案 0 :(得分:1)

  

我想检索所有具有书籍的作者的列表 - whitout具有重复的作者

使用has()方法:

$authorsWithBooks = Author::has('books')->get();

答案 1 :(得分:1)

$ books = Books :: with('author') - > get();