Laravel "with" 未填充相关模型

Laravel "with" is not populate related model

我在 Laravel 中有两个表 Eloquent:

UserCategory:
id | user | category

Category:
id | name 

UserCategories 与类别槽相关 belongsTo:

class UserCategory extends Model
{
   public function category()
   {
       return $this->belongsTo('App\Category', 'category');
   }
}

但是当我尝试获取带有类别的 UserCategories 时,我得到了整数值(而不是类别模型)

$categories = [];
$userCategory = UserCategory::where('user', $user->id)->with('category')->get();

foreach($userCategory as $item) {
   $categories[] = $item->category->name;
}   

当我尝试获取类别名称时,我看到了第二个错误:

Trying to get property 'name' of non-object

奇怪的是,当我使用 dd($item) 时,我看到 $item 与类别对象有正确的关系,但是 dd($item->category) returns整数值(类别 ID)而不是类别模型。

你们的名字有冲突。您同时拥有 category 列和 category 关系。通过说 $item->category 它向您显示 category 列值。尝试将关系名称更改为其他名称,看看是否可行。

最佳做法是使用列名 category_id,但如果更改列名在您的情况下不可行,那么关系名称也同样有效。

在这里更改你的关系名称或 ID 名称,因为这里你的关系名称和列名称相同

class UserCategory extends Model
{
   public function category()
   {
       return $this->belongsTo(Category::class, 'category');
   }
}