我刚刚在所有帖子中搜索过这个问题,但我无法得到答案。
我有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');
}
表
我想在一个视图中打印来自经过身份验证的用户的所有扇区,如下所示:
$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
答案 0 :(得分:0)
要么您忘记在文章中提及它,要么sector_id
表中缺少categorys
字段。
根据您的数据库结构,表categorys
到表sectors
答案 1 :(得分:0)
正如我前面提到的,是上述问题的答案。 hasmanythought关系是关联和简单查询thouse 3表的正确方法。
对于模型User.php,您需要创建关系:
public function sectors(){
return $this->hasManyThrough('Sector','Category');
}
现在,您需要在控制器中执行以下操作:
$user = new User;
$user = Auth::user();
$sectors = $user->sectors;
#return the view showsectors
return View::make('showsectors')->with('sectors', $sectors);
使用此变量(扇区)在您的视图中打印查询结果(一个用户的所有部门描述),如下所示:
@foreach($sectors as $sector)
{{ $sector->id }}
{{ $sector->description }}
@endforeach
感谢您的帮助。
BR