Laravel-oneToMany返回未定义的属性
我只是在所有的帖子中搜索这个问题,但我无法得到答案 我有3个表:用户|类别|部门,模型如下: User.php Category.php Sector.php 桌子Laravel-oneToMany返回未定义的属性,laravel,eloquent,eager-loading,Laravel,Eloquent,Eager Loading,我只是在所有的帖子中搜索这个问题,但我无法得到答案 我有3个表:用户|类别|部门,模型如下: User.php Category.php Sector.php 桌子 用户: 身份证,姓名 类别: id、名称、用户id(fk) 部门: id、名称、类别\u id(fk) 我想在视图中打印已验证用户的所有扇区,如下所示: $user = new User; $user = Auth::user(); $sectors = $user->categorys->sector
- 用户:
- 身份证,姓名
- 类别:
- id、名称、用户id(fk)
- 部门:
- id、名称、类别\u id(fk)
$user = new User;
$user = Auth::user();
$sectors = $user->categorys->sectors;
并在视图中的$sections变量中使用此选项
@foreach($sectors as $sector)
{{ $sector->id }}
{{ $sector->name }}
@endforeach
但我得到了这个错误:
Undefined property: Illuminate\Database\Eloquent\Collection::$sectors
需要帮助!谢谢
BR您可能忘记在文章中提到它,或者
类别
表中缺少扇区id
字段
根据您的数据库结构,表
类别
到表扇区
之间没有外键,正如我前面提到的,这里是上述问题的答案。
HasmanyThink关系是关联和轻松查询3个表的正确方法
对于model User.php,您需要创建以下关系:
现在,在控制器中,您需要执行以下操作:
使用此变量(扇区)在视图中打印查询结果(来自一个用户的所有扇区描述),如下所示:
@foreach($sectors as $sector)
{{ $sector->id }}
{{ $sector->description }}
@endforeach
谢谢你的帮助
BR再努力一点,这里至少有几个问题,所以要讨论这个问题。对于这种情况,您有
hasManyThrough
关系。您是否在类别
模型上指定了表格
?因为categories
是默认值,所以雄辩者将搜索。是的,我将表的名称指定为“categoris”,我找到了解决方案。正如Jarek Tkaczyk所说的那样,哈斯曼尼思之路是存在的。在用户模型公共函数sectors(){return$this->hasManyThrough('Sector','Category');}
中使用它,并在控制器视图中使用:`$sectors=$User->sectors;`感谢您的帮助而不是使用:$sectors=$user->categories->sectors代码>使用:$sectors->load('categorys.sectors')代码>您好,由于我修复了上一个问题,我有另一个问题。假设我有一个4º表(成本,带扇区id),它属于扇区表。如何从一个用户id获取所有成本?我尝试了return$this->hasManyThrough('Cost'、'Sector'、'Category')
在User.php中,用于函数成本()
但我无法检索到任何需要的信息。溴
@foreach($sectors as $sector)
{{ $sector->id }}
{{ $sector->name }}
@endforeach
Undefined property: Illuminate\Database\Eloquent\Collection::$sectors
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