我有一个数据库结构...
var days = ['monday','tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
days.forEach(function(day, index){
// agency.openingHours.monday.opening; // replace monday to day
// here I want instead of monday to have the day, agency.openingHours.day.opening
})
我的模型中也有所有需要的关系。当我只知道Labels -> LabelPerson <- People -> Samples
时,如何获得所有samples
的ID?
标签
label_id
人员
public function people()
{
return $this->belongsToMany('App\Person');
}
样品
public function labels()
{
return $this->belongsToMany('App\Label')->withTimestamps();
}
public function samples()
{
return $this->hasMany('App\Sample');
}
我尝试在public function person()
{
return $this->belongsTo('App\Person');
}
模型中使用 hasManyThrough 关系
Label
但没有结果...
找不到列:1054“字段”中的未知列“ people.label_id” 列表”(SQL:从
public function samples() { return $this->hasManyThrough('App\Sample', 'App\Person'); }
中选择samples
。*,people
。label_id
samples
上的内部联接people
。people
=id
。samples
其中person_id
。people
= 2)“,
我正在使用Laravel 5.7.9。
答案 0 :(得分:1)
您可以使用whereHas()
方法获取它们,这将为您提供按关系过滤记录的方法
Sample::whereHas("person.labels",function ($query) use ($label_id){
$query->where("label_id",$label_id);
})->get()->pluck("id");