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

Posted

技术标签:

【中文标题】Laravel 获取关系具有价值的模型集合【英文标题】:Laravel get collection of models where relation has value 【发布时间】:2017-04-08 17:14:51 【问题描述】:

我正在尝试为我的 Laravel 网络应用程序制作更详细的注册表单。 我有一个 CategoryQuestionSurvey 模型。 一个类别hasMany Question 和一个Question belongsTo 一个Survey

类别类:

public function questions()

    return $this->hasMany('App\Question');


public function getUsingAttribute()

    return $this->questions->contains('survey_id', Survey::current()->id);

我的 Category 类中目前确实有一个 using 属性,但我想将其设为范围。 需要明确的是,Category::using->get() 的预期回报将返回所有Category,其中至少有一个问题具有survey_idSurvey::current()

【问题讨论】:

【参考方案1】:

我会使用query a relationship existence 可用的方法之一,特别是whereHas() 方法:

return $this->whereHas('questions', function ($query)
    $query->where('survey_id', Survey::current());
);

【讨论】:

我把它放在一个作用域里,把$this改成$query,效果很好【参考方案2】:

怎么样

return $this->questions->where('survey_id', Survey::current()->id);

【讨论】:

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

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

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

Laravel - 使用“whereHas”获取嵌套关系

Laravel 雄辩模型如何从关系表中获取数据

Laravel 8:获取特定关系的“morphOne”类的所有模型的类名

Laravel 混合获取 Eloquent 急切加载嵌套多个模型