Laravel - oneToMany 返回未定义 属性

Laravel - oneToMany returning Undefined property

我刚刚在所有帖子中搜索了这个问题,但我找不到答案。

我有 3 个表:用户 |类别 |具有以下模型的部门:

User.php

public function categorys(){
        return $this->hasMany('Category');
}

Category.php

public function user(){
    return $this->belongsTo('User');
}
public function sectors(){
    return $this->hasMany('Sector');
}

Sector.php

public function category(){
    return $this->belongsTo('Category');
}

Tables

我想在视图中打印来自经过身份验证的用户的所有扇区,如下所示:

$user = new User;
$user = Auth::user(); 
$sectors = $user->categorys->sectors;

并在视图中的 $sectors 变量中使用它

@foreach($sectors as $sector)
  {{ $sector->id }}
  {{ $sector->name }}
@endforeach

但是我得到这个错误:

Undefined property: Illuminate\Database\Eloquent\Collection::$sectors

需要帮助!谢谢

BR

您可能忘记在文章中提及它,或者 categorys table.

中缺少 sector_id 字段

根据您的数据库结构,table categorys 到 table sectors

之间没有外键

正如我之前提到的,这里是上述问题的答案。 hasmanythought 关系是关联和轻松查询 3 个表的正确方法。

For model User.php you need to create the relationship:

public function sectors(){
    return $this->hasManyThrough('Sector','Category');
}

Now in your controller you need to do:

$user = new User;
$user = Auth::user(); 
$sectors = $user->sectors;
#return the view showsectors
return View::make('showsectors')->with('sectors', $sectors);

使用此变量 (sectors) 在您的视图中打印查询结果(来自一个用户的所有扇区的描述),如下所示:

@foreach($sectors as $sector)
 {{ $sector->id }}
 {{ $sector->description }}
@endforeach

感谢您的帮助。

BR