gpt4 book ai didi

php - Laravel通过与其属性相同的名称获得 Eloquent 关系

转载 作者:行者123 更新时间:2023-12-04 22:42:36 25 4
gpt4 key购买 nike

我有这样的数据库表:

shoot: id, name, programme
programme: id, name

拍摄中 Eloquent 关系定义如下:
public function programme() {
return $this->belongsTo('App\Programme', 'programme', 'id');
}

使用 dd()时,我可以看到它正常工作:
dd(Shoot:where('id','=',1)->with('programme')->first());
// prints the object with programme listed under the relationship

但是,当我渴望加载拍摄并尝试获取程序对象时,我取而代之的是获取拍摄属性“programme”。例如。:
$shoot = Shoot:where('id','=',1)->with('programme')->first();
echo $shoot->programme; // returns 1, not App\Programme object.

是否有解决方案而不必重写大量代码库?

最佳答案

您不应该对 relationshipcolumn 名称使用相同的名称,否则您将始终收到 column 名称,因此请尝试编辑其中之一,我认为这里最简单的是 relationship 名称:

public function programmeObj() {
return $this->belongsTo('App\Programme', 'programme', 'id');
}

然后将其称为:
echo $shoot->programmeObj;

注意: 但是如果你想遵循约定,你应该用 programme_id 替换 name 属性,所以:
public function programme() {
return $this->belongsTo('App\Programme', 'programme_id', 'id');
}

希望这可以帮助。

关于php - Laravel通过与其属性相同的名称获得 Eloquent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com