所以这是我的模特:
EmployerHours
belongsTo Report
Report
belongsTo Employer
我们有很多地方$employerHour->report->employer
让雇主与EmployerHour
绑在一起。 (请记住,我没有能力更改架构)。我决定在EmployerHour
模型上执行以下操作:
/**
* Attribute for retrieving the Employer directly from employer hours
* @return App\Models\Employer
*/
public function getEmployerAttribute()
{
return $this->report->employer;
}
这几乎看起来像是一个黑客。但是,有很多次这种情况发生,这已经变得有用。我当时认为必须有一个hasOneThrough
关系,但它似乎并非如此。这是正确的方法吗?或者我错过了什么?
答案 0 :(得分:-1)
总有办法:)
您可以通过连接表来实现此目的。一个例子是:
// EmployerHour.php
public function employer()
{
return Employer
::select('employers.*')
->join('reports', 'employers.id', '=', 'reports.employer_id')
->join('employerhours', 'reports.id', '=', 'employerhours.report_id')
->where('employerhours.id', $this->id);
}
可能需要更改此示例中使用的列名。