gpt4 book ai didi

php - 如何获得具有 morphToMany 关系的第一个对象?

转载 作者:行者123 更新时间:2023-12-04 09:33:27 28 4
gpt4 key购买 nike

我的项目表上有一个多态关系

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/

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