[英]Clarify how to setup a one-to-many relationship in Laravel's Eloquent ORM
好的,我正在通過Laravel 4文檔來設置兩個模型之間的一對多關系。 顯然,一方應該使用hasMany()。 但對於另一方,我應該使用hasOne還是belongsTo? 有關系嗎? 有什么區別? 為什么兩者都存在?
我曾經認為hasOne將是一對一的關系,而且屬於一對多的一方。 但是在文檔中,要在此處插入相關模型:
http://laravel.com/docs/eloquent#inserting-related-models
他們使用的是save()
,它似乎只出現在hasOne
和hasMany
關系中,而不是在belongsTo
。 看起來belongsTo
使用associate()
用於相同的目的:
也許我只需要一些關於何時使用belongsTo
與hasOne
一般背景hasOne
,以及為什么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 。 (如果一個帖子有很多評論,評論屬於帖子)。
帖子和評論的表格如下
帖子表 ID | 標題| 身體
注釋表 ID | 評論| POST_ID
包含外鍵的數據庫表屬於另一個表中的記錄,因此,在注釋模型中,您必須指定注釋屬於帖子。
你是正確的,hasOne關系只適用於一對一的關系。
這是一篇帶有laravel 3代碼的博客文章,它解釋了雄辯的關系方法是如何工作的。
http://laravel.io/topic/14/how-eloquent-relationship-methods-work
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.