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

FFF*_*FFF 0 php laravel eloquent eloquent-relationship

我在Laravel Eloquent中有两个表:

UserCategory:
id | user | category
Run Code Online (Sandbox Code Playgroud)

Category:
id | name 
Run Code Online (Sandbox Code Playgroud)

UserCategories与类别低谷所属到

class UserCategory extends Model
{
   public function category()
   {
       return $this->belongsTo('App\Category', 'category');
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试获取带有类别的UserCategories时,我得到了整数值(而不是Category模型)

$categories = [];
$userCategory = UserCategory::where('user', $user->id)->with('category')->get();

foreach($userCategory as $item) {
   $categories[] = $item->category->name;
}   
Run Code Online (Sandbox Code Playgroud)

当我尝试获取类别名称时,看到第二个错误:

试图获取非对象的属性“名称”

奇怪的是,当我使用时,dd($item)我看到$ item与Category对象具有正确的关系,但是 dd($item->category)返回整数值(类别ID)而不是类别模型。

Bri*_*son 5

您的姓名冲突。您既有category专栏,也有category关系。通过说出$item->category它为您显示的category列值。尝试将关系名称更改为其他名称,然后查看是否可行。

最佳做法是使用列名称category_id,但是如果在您的情况下更改列名称不可行,则关系名称也将起作用。

  • 如果无法重命名列或关系,也可以使用$ item-> getRelation('category')-> name`。 (2认同)