【问题标题】:Laravel relationships: get the relation of an array of modelsLaravel 关系:获取模型数组的关系
【发布时间】:2016-08-20 10:03:23
【问题描述】:

我有一个特定模型的数组,从数据库中检索,假设:

$entries = Entry::with('area')->get();

我想获得与条目相关的所有“区域”。

一个条目只与一个区域相关。

我可以遍历$entries 数组,为每个数组获取Area 并将其存储在另一个数组中,注意避免重复(是的,我想要一个“不同”的区域)。

没有更好的解决方案吗?即使在(删除重复项)之后对所有区域进行处理(我认为)也比遍历 $entries 数组更好。

【问题讨论】:

  • 您希望条目的不同区域作为最终结果吗?
  • 是的!因为一个区域可以有很多条目,所以会出现很多次。我只是想知道哪些区域需要条目。
  • 一个区域必须与某个条目相关?,

标签: php laravel model eloquent relationship


【解决方案1】:

您可能希望将haswith 结合使用。

$entries = Entry::has('area')->with('area')->get();

这将只返回具有相关AreaEntrys

您的问题有点令人困惑,听起来您想获得具有Entrys 的Areas,在这种情况下您将从Area 对象`开始。

$areas = Area::has('entries')->get();

这将只返回至少有一个EntryAreas。它也不会急切加载条目,如果您也需要该数据,您可以链接 with(),就像在第一个示例中一样。

【讨论】:

    【解决方案2】:

    一种方法可能是,在获取所有区域后获取所有条目 id 区域:

    $ids =  Entry::all(['area_id'])->toArray();
    $areas = Area::whereIn($ids)->distinct()->get();
    

    【讨论】:

      猜你喜欢
      • 2017-01-12
      • 1970-01-01
      • 2014-03-04
      • 2019-07-16
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2015-11-12
      • 2019-04-04
      相关资源
      最近更新 更多