好的,我正在通过Laravel 4文档来设置两个模型之间的一对多关系。显然,一方应该使用hasMany()。但对于另一方,我应该使用hasOne还是belongsTo?有关系吗?有什么区别?为什么两者都存在?
我原以为hasOne将是一对一的关系,而且属于一对多的一方。但是在文档中,在这里插入相关模型:
http://laravel.com/docs/eloquent#inserting-related-models
他们使用的save()
似乎只出现在hasOne
和hasMany
关系中,而不是belongsTo
。看起来belongsTo
使用associate()
用于同一目的:
也许我只需要一些关于何时使用belongsTo
与hasOne
的一般背景知识,以及为什么belongsTo
使用associate()
而hasOne
使用{{1} }}
编辑:我想我的困惑点在于文档(http://laravel.com/docs/eloquent#inserting-related-models),他们使用了:
save()
我将使用的地方:
$post->comments()->save($comment);
这种或那种方式有优势吗?或者它只是一个在上下文中有意义的问题?
答案 0 :(得分:10)
请参阅laravel文档,了解帖子和评论http://laravel.com/docs/eloquent#relationships之间的一对多关系。 (如果一个帖子有很多评论,评论属于帖子)。
帖子和评论的表格如下
帖子表 id |标题|体
评论表 id |评论| POST_ID
包含外键的数据库表属于另一个表中的记录,因此,在注释模型中,您必须指定注释属于帖子。
你是正确的,hasOne关系只适用于一对一的关系。
这是一篇包含laravel 3代码的博客文章,其中解释了雄辩的关系方法的工作原理。
http://laravel.io/topic/14/how-eloquent-relationship-methods-work