Laravel“ with”没有填充相关模型

时间:2019-11-18 15:43:41

标签: php laravel eloquent eloquent--relationship

我在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)而不是类别模型。

2 个答案:

答案 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');
   }
}