php Laravel“with”不是populate相关模型

vltsax25  于 5个月前  发布在  PHP
关注(0)|答案(2)|浏览(40)

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。

qybjjes1

qybjjes11#

您有冲突的名称。您既有category列,又有category关系。通过说$item->category,它向您显示category列值。尝试将关系名称更改为其他名称,看看是否有效。
最佳实践是使用category_id列名,但如果在您的情况下更改列名不可行,那么关系名称也可以工作。

tv6aics1

tv6aics12#

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

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

字符串

相关问题