php 如何在Laravel 9 / 10中实现一种归属到通过关系?

k4aesqcs  于 2023-03-07  发布在  PHP
关注(0)|答案(1)|浏览(100)

有三种模式:雇主、示例、员工。
模型的重要填充物是:

      • 雇主**
  • 公司名称
      • 示例**
  • 工人标识
  • 雇主标识
      • 工人**
  • 姓名

因此,我有:

class Employer {
    public function instances()
    {
        return $this->hasMany(Instance::class);
    }
}
class Instance {
    public function worker()
    {
        return $this->belongsTo(Worker::class);
    }

    public function employer()
    {
        return $this->belongsTo(Employer::class);
    }
}

我想要的是

class Worker {
    public function employer()
    {
        return $this->belongsToThrough(Instance::class, Employer::class);
    }
}

但此函数不存在。SQL应为:

select e.company
from employers e
join instances i on i.employer_id = e.id
join workers w on w.id = i.worker_id
where w.id = ?

最后,我希望能够使用:

$workers_company = Worker::find(1)->employer->company_name;
qnakjoqk

qnakjoqk1#

您需要一个hasOneThrough关系,最终表/类作为第一个参数,中间表/类作为第二个参数(通过示例具有一个雇主)。

class Worker {
    public function employer()
    {
        return $this->hasOneThrough(Employer::class, Instance::class);
    }
}

相关问题