首页 > 解决方案 > Laravel 雄辩的多层次关系

问题描述

好的,所以我基本上是在尝试根据用户 ID 检索所有 animal_registry 代码。

想法是 1 个用户有很多工作。 工作由许多“工作数据”组成。 乔布斯数据有许多“动物登记”条目。

这些是我的关系 图片关系链接(点击)

这些是我在 Laravel 中的关系

class User
{
    public function jobs()
    {
        return $this->hasMany('App\Models\RegistryJobs', 'employee', 'id');
    }
}


class RegistryJobs extends Model
{
    protected $table = "registry_jobs";

    protected function jobsData()
    {
        $this->hasManyThrough('App\Models\AnimalRegistry', 'App\Models\RegistryJobsData', 'id', 'animal_registry_id');
    }
}

class RegistryJobsData extends Model
{
    protected $table = "registry_jobs_data";

    public function jobs()
    {
        $this->belongsTo('App\Models\RegistryJobs', 'id', 'registry_jobs_id');
    }

    public function animals()
    {
        $this->hasMany('App\AnimalRegistry', 'id', 'animal_registry_id');
    }
}

class AnimalRegistry extends Model
{
    protected $table = "animal_registry";

}

现在我试图以某种方式从控制器查询它

$data = User::whereHas('jobs', function ($query)  {
    $query->where('id', 1);
})->get();

但我无法从 animal_registry 访问属性。

标签: laraveleloquent

解决方案


你可以这样试试:

 public function animals(){
     return $this->hasManyThrough('App\Registry_Jobs_data','App\Registry_Jobs', 'employee', 
    'registry_jobs_id', 'id' ,'id')->join('//Do the joining')->select();
 }

检查hasManyThrough我不确定..


推荐阅读