2016-04-26 31 views
1

在我的控制,我通過我的模板項目顯示數據

$projects = Project::all(); 
return view('projects.index', compact('projects')); 

列表現在項目都有一個客戶端,客戶端所屬的項目。如果我環路我的項目我的觀點中,我得到以下數據

#attributes: array:11 [▼ 
    "id" => "25" 
    "jobNumber" => "J0001" 
    "projectName" => "Some Name" 
    "clientId" => "1" 
    "clientContact" => "Some Contact" 
    "contactEmail" => "[email protected]" 
    "status" => "Email" 
    "deleted_at" => null 
    "created_at" => "2016-04-25 14:15:19" 
    "updated_at" => "2016-04-26 10:05:06" 
] 

正如你所看到的,clientid以1.此鏈接到一個特定的客戶端。有什麼方法可以使用此ID獲取客戶名稱?我知道如何在控制器中做到這一點,但我無法爲每個具有客戶端名稱的項目傳遞一個變量,這太多了。就目前來看,我將所有的項目都傳遞給了這些項目,並且每個項目都有一個clientId。不知何故,我需要得到基於此的命名。

感謝

回答

3

你做模型的關係像這樣:

項目:

public function client() 
    { 
     return $this->hasOne('App\Project'); 
    } 

如果你沒有,你可以獲取到客戶端,您需要通過簡單地調用Project::find($id)->client

如果你想通過控制器轉發它,你可以這樣做:

$projects = Project::with('client'); 
return view('project.index', compact('projects')); 

這將在項目下嵌套客戶端JSON。

編輯:

但是,如果我理解正確的,你的問題是在一個視圖中顯示它,而不需要做的變量hundereds。如果您在使用刀片你的意見,你可以用foreach循環做它像這樣:

@foreach($projects as $project) 
    {{$project->client->name}} 
@endforeach 

你只會所有的項目

+0

嗨,關係的存在。但是,事情是,你發佈的內容需要在控制器中完成。當我通過視圖所有的項目,我不能真正做你的建議,因爲這意味着每個項目有一個新的變量 –

+1

完美,謝謝 –

+0

很好地複製我的答案。 – Anderscc

1

是遍歷。

看到您爲項目創建了一個模型。

您可以在該模型中爲客戶定義關係。

這一切都取決於你希望它的關係。例如,項目是否可以有多個客戶端。

假設一個項目有一個客戶端。

/** 
* Get list of clients for project 
* @return object 
*/ 
public function client() 
{ 
    return $this->hasOne('App\Project'); 
} 

,然後你的刀模板中可以調用

{{ $project->client->name }}