2013-05-15 82 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