簡體   English   中英

闡明如何在Laravel的Eloquent ORM中建立一對多的關系

[英]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() ,它似乎只出現在hasOnehasMany關系中,而不是在belongsTo 看起來belongsTo使用associate()用於相同的目的:

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

也許我只需要一些關於何時使用belongsTohasOne一般背景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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM