Laravel Eloquent中有两个表:
UserCategory:
id | user | category
字符串
和
Category:
id | name
型
UserCategories通过收件人与类别相关:
class UserCategory extends Model
{
public function category()
{
return $this->belongsTo('App\Category', 'category');
}
}
型
但是当我尝试使用Categories获取UserCategories时,我得到了整数值(而不是Category模型)
$categories = [];
$userCategory = UserCategory::where('user', $user->id)->with('category')->get();
foreach($userCategory as $item) {
$categories[] = $item->category->name;
}
型
当我尝试获取类别的名称时,我看到第二个错误:
正在尝试获取非对象的属性“name”
奇怪的是,当我使用dd($item)
时,我看到 $item 与Category对象的关系是正确的,但是dd($item->category)
返回的是整数值(category id)而不是category model。
2条答案
按热度按时间qybjjes11#
您有冲突的名称。您既有
category
列,又有category
关系。通过说$item->category
,它向您显示category
列值。尝试将关系名称更改为其他名称,看看是否有效。最佳实践是使用
category_id
列名,但如果在您的情况下更改列名不可行,那么关系名称也可以工作。tv6aics12#
在这里更改您的关系名称或ID名称,因为这里您的关系名称和列名相同
字符串