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

vltsax25  于 2024-01-05  发布在  PHP
关注(0)|答案(2)|浏览(180)

Laravel Eloquent中有两个表:

  1. UserCategory:
  2. id | user | category

字符串

  1. Category:
  2. id | name


UserCategories通过收件人与类别相关:

  1. class UserCategory extends Model
  2. {
  3. public function category()
  4. {
  5. return $this->belongsTo('App\Category', 'category');
  6. }
  7. }


但是当我尝试使用Categories获取UserCategories时,我得到了整数值(而不是Category模型)

  1. $categories = [];
  2. $userCategory = UserCategory::where('user', $user->id)->with('category')->get();
  3. foreach($userCategory as $item) {
  4. $categories[] = $item->category->name;
  5. }


当我尝试获取类别的名称时,我看到第二个错误:
正在尝试获取非对象的属性“name”
奇怪的是,当我使用dd($item)时,我看到 $item 与Category对象的关系是正确的,但是dd($item->category)返回的是整数值(category id)而不是category model。

qybjjes1

qybjjes11#

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

tv6aics1

tv6aics12#

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

  1. class UserCategory extends Model
  2. {
  3. public function category()
  4. {
  5. return $this->belongsTo(Category::class, 'category');
  6. }
  7. }

字符串

相关问题