2015-05-07 43 views
0

工作,我有两个表:Laravel雄辩模型关系不上刀模板

Persons 
id, name, foto_id 

Fotos 
id, url 

Person模式,我说:

public function foto() { 
    return $this->hasOne("App\\Foto","id","foto_id"); 
} 

请注意,我需要转义\F ...

当我尝试{{ $person->foto->url }},我得到“试图访问非对象的属性”错误。如果我{{ print_r($person->foto()) }}我得到的只是1 ...

我跟着laravel文档,这tutorial

这是一个项目,我创建学习Laravel,所以任何有帮助的建议表示赞赏!

编辑:
artisan tinker$person->foto->url工作按计划,返回Foto对象就好了......

回答

0

您需要使用belongsTo功能,而不是hasOne的。
如果您创建Foto模型,那么您需要一个hasMany函数。

有关这方面的更多信息,请参阅Laravel docs

+0

所以我必须链接两端的关系(Person'hasOne' Foto和Foto'belongsTo' Person)? –

+0

另一种方式:代表FK表的模型使用'belongsTo'函数。表示包含PK的表的模型使用'hasOne'或'hasMany'函数。 – Blaatpraat

+0

这似乎是我的误解! 'Person'有'Foto',所以我把FK(?)foto_id放在'Persons'表上,而'Fotos'表只有'id'和'url'字段。所以,只有这个人应该知道它的照片是什么,没有Foto应该知道他们属于谁。 –