我的项目表上有多态关系public function categories(): MorphToMany{ return $this->morphToMany(Category::class, 'categorizable', 'categorizables', 'categorizable_id', 'category_id') ->withTimestamps();}有用。我按预期得到了对象列表。只是,我的数据库中的某些模型始终只有一个类别。我想避免获得项目列表。我想要直接的对象。我尝试过,但它不起作用:public function category(){ return $this->morphToMany(Category::class, 'categorizable', 'categorizables', 'categorizable_id', 'category_id')->first;}Call to undefined method App\Models\Category::addEagerConstraints()我有这样的结果:{ 'id': 1, 'name': 'My name', 'categories': [ {my object category} ]}我想 :{ 'id': 1, 'name': 'My name', 'category': {my object category}}我怎样才能做到这一点?这是一种多对多的多态关系。
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
morphToMany 类似于 HasMany(),它总是返回一个数组。
您可以使用 EloquentAccessor来获取类别并操作数据。
protected $appends = ['category_data'];
public function getCategoryDataAttribute()
{
return $this->categories->first();
}
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消