Laravel 获取关系具有价值的模型集合
Posted
技术标签:
【中文标题】Laravel 获取关系具有价值的模型集合【英文标题】:Laravel get collection of models where relation has value 【发布时间】:2017-04-08 17:14:51 【问题描述】:我正在尝试为我的 Laravel 网络应用程序制作更详细的注册表单。
我有一个 Category
、Question
和 Survey
模型。
一个类别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_id
或Survey::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 关系的表的所有模型?