如何获取第一个具有 morphToMany 关系的对象?

我的项目表上有多态关系


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}

}

我怎样才能做到这一点?这是一种多对多的多态关系。


慕的地8271018
浏览 106回答 1
1回答

拉丁的传说

morphToMany 类似于 HasMany(),它总是返回一个数组。您可以使用 EloquentAccessor来获取类别并操作数据。protected $appends = ['category_data'];public function getCategoryDataAttribute(){           return $this->categories->first();} 
打开App,查看更多内容
随时随地看视频慕课网APP