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');
}
}
我在 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');
}
}