阐明如何在java '雄辩ORM中建立一对多关系


Clarify how to setup a one-to-many relationship in Laravel's Eloquent ORM

好的,我正在通过Laravel 4文档来设置两个模型之间的一对多关系。显然,一方应该使用hasMany()。但是对于另一边,我应该使用hasOne还是belongsTo呢?这有关系吗?的区别是什么?为什么两者都存在?

我原以为hasOne是一对一的关系,belongsTo是一对多的一方。但是在文档中,在这里插入相关模型:

http://laravel.com/docs/eloquent inserting-related-models

他们使用的save()似乎只存在于hasOnehasMany关系中,而不存在于belongsTo中。看起来belongsTo使用associate()来达到同样的目的:

https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php L188

也许我只是需要一些关于何时使用belongsTohasOne的一般背景,以及为什么belongsTo使用associate()hasOne使用save()

编辑:我想我的困惑点是在文档(http://laravel.com/docs/eloquent#inserting-related-models)中,他们使用:

$post->comments()->save($comment);

我应该用:

$comment->post()->associate($post);

这一种方式有优势吗?或者这只是一个在上下文中什么是有意义的问题?

请参考laravel文档关于帖子和评论之间的一对多关系http://laravel.com/docs/eloquent#relationships。(一个帖子有很多评论,一个评论属于一个帖子)。

帖子和评论的表格如下

Posts表Id | title |正文

<<p> 评论表/strong>Id | comment | post_id

包含外键的数据库表属于另一个表中的记录,因此,在comments模型中必须指定comments属于posts。

你是正确的,hasOne关系只适用于一对一的关系。

这是一篇带有laravel 3代码的博客文章,它解释了雄辩关系方法是如何工作的。

http://laravel.io/topic/14/how-eloquent-relationship-methods-work