我在Laravel Eloquent中有两个表:
UserCategory:
id | user | category
和
Category:
id | name
UserCategories与类别谷属于:
有关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;
}
当我尝试获取类别名称时,我看到第二个错误:
试图获取非对象的属性“名称”
奇怪的是,当我使用dd($item)
时,我看到 $ item 与Category对象具有正确的关系,但是dd($item->category)
返回的是整数值(类别ID)而不是类别模型。
答案 0 :(得分:5)
您的姓名冲突。您既有一个category
列,又有一个category
关系。通过说$item->category
可以向您显示category
列值。尝试将关系名称更改为其他名称,看看是否可行。
最佳做法是使用列名category_id
,但是如果在您的情况下更改列名不可行,则关系名称也将起作用。
答案 1 :(得分:1)
在这里更改您的关系名称或id名称,因为在这里您的关系名称和列名相同
class UserCategory extends Model
{
public function category()
{
return $this->belongsTo(Category::class, 'category');
}
}