Laravel 5.2 - 具有一个通过或自定义属性

时间:2016-06-30 05:17:56

标签: laravel eloquent

所以这是我的模特:

  • 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关系,但它似乎并非如此。这是正确的方法吗?或者我错过了什么?

1 个答案:

答案 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);

}

可能需要更改此示例中使用的列名。