Laravel模型关系。纯DB相关

时间:2014-10-22 15:02:29

标签: php laravel laravel-4 relationship

我正在阅读关于定义关系的Laravel文档,这对我来说有点不清楚。 (可能是因为语言障碍..)

我得到了以下内容:

我希望人们选择一个目标。如果用户选择目标,则会显示相关的包。在这些包中有一个信息按钮,其中包含有关包的更多信息。 如果用户单击信息链接,将显示相关的包信息。

FYI!将有9个目标。每个目标有3个包,每个包有1个packageinfo。

Objective Model
// contains
- id
- name
- icon

// relationship
HasMany package

////////////////////////////////////////////////////
Package Model
// contains
- id
- title
- information
- info_link
- buy_link

// relationship
belongsToMany Model
hasMany PackageInfo -- or has PackageInfo ?

///////////////////////////////////////////////////
PackageInfo Model
// contains
- id
- body

// relationship
belongsToMany Package -- or belongsTo Package ?


//////////////////////////////////////////////////
Objective_package Pivot
- id
- Objective_id
- Package_id

package_packageInfo pivot
- id
- Package_id
- packageinfo_id

我是否正确地定义了这些关系,或者我是否真的像整理一样阅读整个文档?

1 个答案:

答案 0 :(得分:0)

打包关系的目标似乎是正确的,但如果只有1个packageinfo,那么您不需要该关系的数据透视表

//PackageInfo Model
- id
- package_id
- body

//relationship
belongsTo Package
$this->belongsTo('Package');

我能给出的最快答案是帮助解释这个问题 hasOne将用于属于父对象的数据,但可能并不总是需要使用它。在用户中有一个配置文件。 90%,如果不是更多的时候你不想要他们的生物或个人资料,但该个人资料是该用户独有的。

hasMany就像地址一样。用户可以有多个地址用于发货或开票,但其他用户无权访问该数据,因此这个用户有多个地址

belongsToMany或Many To Many,在多个对象之间共享。用户可以拥有多个角色,角色将拥有许多用户。博客的帖子可能有很多标签,标签会贴在很多帖子上。

多态性;你可能永远不需要担心,但想法是一个图像可以属于许多不同的对象,但以不同的方式。如在图库的成员,或用户的缩略图或博客标题图像等中。这破坏了代码名称和可重用性中的关系数据映射。建议自由裁量权,因为许多人对如何/何时使用这一点有不同的看法。

希望这会有所帮助。如果有什么我试图帮助你,或者如果我错过了你想要的东西,请告诉我。