Laravel两级关系查询

时间:2018-10-13 10:19:40

标签: php laravel laravel-5

我有一个数据库结构...

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。*,peoplelabel_id   samples上的内部联接peoplepeople = idsamples其中   person_idpeople = 2)“,

我正在使用Laravel 5.7.9。

1 个答案:

答案 0 :(得分:1)

您可以使用whereHas()方法获取它们,这将为您提供按关系过滤记录的方法

Sample::whereHas("person.labels",function ($query) use ($label_id){
      $query->where("label_id",$label_id);
    })->get()->pluck("id");