获取 Eloquent 中所有相关模型实例的不同列表

问题描述 投票:0回答:2

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

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

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

我想知道是否有更聪明的方法来实现这一点,即减少数据库查询次数的方法。

php laravel eloquent distinct
2个回答
1
投票

我想检索拥有一本书的所有作者的列表 - 没有重复的作者

使用

has()
方法:

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

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.