Laravel 自定义 belongsTo 动态绑定

Posted

技术标签:

【中文标题】Laravel 自定义 belongsTo 动态绑定【英文标题】:Laravel custom belongsTo dynamic binding 【发布时间】:2021-12-26 19:56:52 【问题描述】:

我有 2 个模型,BuildingApartment。建筑物有一个名为address 的列,公寓有一个名为addresss 的列

我想添加这样的关系:

public function building() 
    return $this->belongsTo(Building::class, 'addresss', 'address');

但是这给了null:

Apartment::first()->building

即使这样可行:

Apartment::first()->building()->first()

那么我应该怎么做才能让它只使用这个来工作:

Apartment::first()->building

【问题讨论】:

【参考方案1】:

如果我保持正确,公寓是建筑物的一部分吗?

这就是你在样板间设置关系的原因:

public function building() 
    return $this->belongsTo(Building::class, 'addresss', 'address');

当我使用 belongsTo 关系时,我只是提到了类,不再像这种情况一样在括号内附加:

 public function user()

    return $this->belongsTo(User::class);

在关系中提及公寓地址的目的是什么?您是否设置了外键的属性并在 Building-Model 中设置了 hasMany 关系?

问候。

【讨论】:

【参考方案2】:

问题是我在公寓表中有一个名为 building 的列,删除它修复了它

【讨论】:

以上是关于Laravel 自定义 belongsTo 动态绑定的主要内容,如果未能解决你的问题,请参考以下文章

未定义的属性:Illuminate\Database\Eloquent\Relations\BelongsTo::$status。 Laravel 5.5 关系

调用未定义的方法 BelongsTo::attach()

Laravel 关系:hasManyThrough、belongsTo、belongsToMany

Laravel 关系不适用于 belongsTo

Laravel 中 BelongsTo 和 HasOne 有啥区别

Laravel Eloquent ORM 关系命名约定