php - Laravel 二级关系查询

标签 php laravel laravel-5

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

Labels -> LabelPerson <- People -> Samples

我的模型中也有所有需要的关系。当我只知道 label_id 时,如何获取所有 samples 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');
}

我尝试在 Label 模型中使用 hasManyThrough 关系

public function samples()
{
    return $this->hasManyThrough('App\Sample', 'App\Person');
}

但是没有结果...

Column not found: 1054 Unknown column 'people.label_id' in 'field list' (SQL: select samples.*, people.label_id from samples inner join people on people.id = samples.person_id where people.label_id = 2)",

我正在使用 Laravel 5.7.9。

最佳答案

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

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

关于php - Laravel 二级关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52791888/

相关文章:

php - 为什么我看不到Zend Framework项目的public文件夹?

php - 在PHP中序列化与SQLite

php - 验证 Laravel 对象变量为空或不存在

php - Laravel 路由参数与 post 路由 vs post 参数

css - Laravel 5 - 电子邮件中的内联 CSS

php - 我如何防止在 PHP 中重复提交表单(跨多个窗口进行保护)?

php - 何时禁用按键

php - 列出 Laravel View 中的所有注册变量

php - 如何在 Laravel-5 中构建子查询

php - Laravel - 当集合作为 JSON 返回时访问器不起作用