【问题标题】:Get a distinct list of all related model instances in Eloquent获取 Eloquent 中所有相关模型实例的不同列表
【发布时间】:2017-01-30 12:14:24
【问题描述】:

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

目前我会遍历所有 Book 实例,如果作者尚未在列表中,则将其添加到列表中:

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

我想知道是否有更聪明的方法来获得这个,即减少数据库查询次数的方法。

【问题讨论】:

    标签: laravel eloquent distinct


    【解决方案1】:

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

    使用has() 方法:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 这将获得所有书籍及其作者。这不是 OP 想要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多