Laravel 获取所有具有关系的模型

Posted

技术标签:

【中文标题】Laravel 获取所有具有关系的模型【英文标题】:Laravel get all the models with relations 【发布时间】:2015-06-12 08:43:23 【问题描述】:

我找不到如何在 Laravel 中使用 Eloquent 获取与另一个元素有关系的所有元素。 我有物质和内容,想要所有与名称为“subst”的物质相关的内容。

我的关系物质 - 内容:

public function relation () 

    return $this->belongsToMany('Substance', 'contents_substances', 'id_contents', 'id_substances');


public function relation () 

    return $this->belongsToMany('Content', 'contents_substances', 'id_contents', 'id_substances');

我知道我可以获得与一种物质相关的所有内容:

$content = Substance::find(1)->relation()->get();

但是是否可以获得与一组物质相关的所有内容?

类似:

$sub = Substance::where('name', '=', 'subst'); // get all the substances with that name
$contents =$sub->relation()->get(); // ???

感谢任何帮助!

【问题讨论】:

【参考方案1】:

最简单的方法是从另一个角度开始查询。在这种情况下来自Content。然后whereHas 将添加一个基于substances 关系的约束:

$contents = Content::whereHas('substances', function($q)
    $q->where('name', 'subst');
)->get();

【讨论】:

以上是关于Laravel 获取所有具有关系的模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 8 中获取与 json 有一个 hasMany 关系的表的所有模型?

如何通过多对多关系获取与同一张表相关的行 - Laravel

Laravel 获取关系具有价值的模型集合

Laravel从模型中获取具有特定数据和关系的记录

获取具有所有属性的 Laravel 模型

Laravel 5 具有雄辩的关系回调函数返回错误记录