我不知道Laravel/Eloquent文档中所有用于hasOne或belongsTo等关系的术语是什么意思。
hasOne类具有$parent、$related、$foreignKey和$localKey等属性。
belongsTo类具有$parent、$related、$child、$foreignKey和$ownerKey等属性。
我希望我有一个备忘单,其中包含以下示例关系:
Given a one to one relationship between users and phones:
user hasOne phone.
phone belongsTo user
hasOne class properties:
$parent = a
$related = b
$foreignKey = c
$localKey = d
... maybe more hasOne properties here
belongsTo class properties:
$parent = a
$related = b
$child = c
$foreignKey = d
$ownerKey = e
... maybe more belongsTo properties here
除非填写了a、B、c、d等。
我希望所有关系类型都有这样的例子。hasMany类属性和belongsToMany类属性在一对多和多对多关系中,等等。每种组合。
下面这句话(可能是错的)来自我的笔记,它突出了我的一个困惑:
“如果a有一个B或a有多个b:a称为父模型,B称为相关模型,但我认为b也称为子模型,因此idk。”-我非常肯定这句话是错误的,但我希望我知道不同术语之间的区别,如子模型和相关模型等。
1条答案
按热度按时间b1payxdu1#
Eloquent的API很难理解,一旦你试图填充所有的变量和它们做什么。我将重复使用Laravel的例子,用户有电话,因为你使用它与所有给定的代码填充。
给定一个
User
模型和一个Phone
模型,其中User
包含一个id
,Phone
包含一个id
和一个user_id
,这两个函数看起来如下:User.php:
在这种情况下,
$parent
是当前用户模型(例如用户ID 1)$related
是此用户拥有的电话(例如电话ID 1)$foreignKey
是您手机型号中的密钥(例如user_id
)$local_key
是本地/当前模型中的键,在本例中为User。反之亦然:
Phone.php
上面的内容仍然是正确的,只是现在您使用的是
owner_key
而不是local_key
,它仍然引用原始/父模型中的键。我必须承认,我不确定
$child
属性的作用,但如果我开始我的Laravel之旅,我不会担心它,因为自Laravel 5.x以来,我没有看到过它的“最终用户”用例。