我的项目表上有一个多态关系
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;
}
调用未定义的方法 App\Models\Category::addEagerConstraints()
我有这样的结果:
{
'id': 1,
'name': 'My name',
'categories': [
{my object category}
]
}
我要:
{
'id': 1,
'name': 'My name',
'category':
{my object category}
}
我该怎么做?这是多对多的多态关系。
最佳答案
morphToMany 类似于总是返回数组的 HasMany()。
您可以使用 Eloquent Accessor
获取类别并操作数据。
protected $appends = ['category_data'];
public function getCategoryDataAttribute()
{
return $this->categories->first();
}
关于php - 如何获得具有 morphToMany 关系的第一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62713430/