2016-06-30 18 views
1

因此,這裏是我的模型:Laravel 5.2 - 具有一個通過或自定義屬性

  • EmployerHours屬於關聯Report
  • Report屬於關聯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

總有辦法:)

您可以通過連接表來實現這一點。一個例子是:

// 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); 

} 

也許你需要改變在這個例子中使用的列名稱。

相關問題