Laravel / Eloquent关系术语

mrfwxfqh  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(169)

我不知道Laravel/Eloquent文档中所有用于hasOnebelongsTo等关系的术语是什么意思。
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。”-我非常肯定这句话是错误的,但我希望我知道不同术语之间的区别,如子模型和相关模型等。

b1payxdu

b1payxdu1#

Eloquent的API很难理解,一旦你试图填充所有的变量和它们做什么。我将重复使用Laravel的例子,用户有电话,因为你使用它与所有给定的代码填充。
给定一个User模型和一个Phone模型,其中User包含一个idPhone包含一个id和一个user_id,这两个函数看起来如下:
User.php:

public function phone()
{
    return $this->hasOne(Phone::class, 'user_id', 'id');
}

在这种情况下,

  • $parent是当前用户模型(例如用户ID 1)
  • $related是此用户拥有的电话(例如电话ID 1)
  • $foreignKey是您手机型号中的密钥(例如user_id
  • $local_key是本地/当前模型中的键,在本例中为User。

反之亦然:
Phone.php

public function user()
{
    return $this->belongsTo(User::class, 'user_id', 'id');
}

上面的内容仍然是正确的,只是现在您使用的是owner_key而不是local_key,它仍然引用原始/父模型中的键。
我必须承认,我不确定$child属性的作用,但如果我开始我的Laravel之旅,我不会担心它,因为自Laravel 5.x以来,我没有看到过它的“最终用户”用例。

相关问题