2013-05-15 57 views
0

下面的代碼運行,另一個不運行。代碼在foreach循環中運行。 有誰知道爲什麼第一個不運行?Laravel從視圖訪問一對一關係

{{ Status::find($workorder->statuses_id)->name }} //this doesn't 


{{ Status::find(1)->name }} //this works 

回答

0

假設你有這樣的定義你們的關係...

class Workorder extends Eloquent { 

    public function status() { 
     return $this->hasOne('Status'); 
    } 
} 

你需要做的:

{{ Status::find($workorder->status->id)->name }} 

這個工作對我來說沒有任何問題。

另外,如果你想使用你最初提供的語法,你可以在工單類像這樣定義一個方法:

public function getStatusesIdAttribute() { 
    return $this->hasOne('Status')->first()->id; 
} 

...但就是有點彆扭,可能不是最好的方法。

+0

感謝您的幫助,我得到了它的工作。還有一件事,我檢查了這一點。在foreach內部我也可以像訪問$ workorder-> status_id-> name這是可能的嗎?我似乎正在嘗試獲取非對象的屬性 – momoterraw

+0

只要狀態表中存在「名稱」列,就應該爲$ workorder-> status-> name! – ARW

+0

這應該是真的嗎?然後,我的模型出了問題。該死的! – momoterraw