Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 指向同一表中记录的雄辩关系_Php_Laravel_Eloquent_Relational Database - Fatal编程技术网

Php 指向同一表中记录的雄辩关系

Php 指向同一表中记录的雄辩关系,php,laravel,eloquent,relational-database,Php,Laravel,Eloquent,Relational Database,我有一个员工表,如下所示: 身份证 名字 主管 这里有所有的员工,这是我仅有的一张桌子 主管字段保存主管的id,该id与员工保存在同一个表中 我有一个表格,它打印出所有员工,以及他们的主管 现在,它只打印主管的id。我正在尝试将该id转换为主管的姓名。所以我决定在同一个模型中使用'belongsTo()'和'hasMany()' 我尝试过各种型号和控制器代码,但每次都会出现不同的错误。我认为我的控制方是问题所在 员工模式 // 公共职能雇员(){ 返回$this->belongsTo('Em

我有一个员工表,如下所示:

  • 身份证
  • 名字
  • 主管
这里有所有的员工,这是我仅有的一张桌子

主管
字段保存
主管
id
,该id与
员工
保存在同一个表中

我有一个表格,它打印出所有
员工
,以及他们的
主管

现在,它只打印主管的
id
。我正在尝试将该
id
转换为
主管的姓名。所以我决定在同一个模型中使用'belongsTo()'和'hasMany()'

我尝试过各种型号和控制器代码,但每次都会出现不同的错误。我认为我的控制方是问题所在

员工模式

//
公共职能雇员(){
返回$this->belongsTo('Employee','id');
}
公共职能经理(){
返回$this->hasMany('Employee','id');
}
员工控制员

$employees=employeen::all();
返回视图('employee/index')->带有('employees',$employees,$employees->manager);
索引


{{$employee->$manager->name}

每个员工都有多个经理,因此没有所谓的
$employees->manager

试试这个:

$employees = Employee:: with ('manager')->get(); 
return view('employee/index')->with('employees', $employees);

在这个答案中,我计算出
主管
是主管的员工id


您的关系有问题,
的第二个参数有许多
belongsTo
方法需要是相关模型的外键(在本例中,是同一个模型,但引用父对象的键,如
supervisor
)。检查与此主题相关的:

与hasOne方法一样,您也可以通过向hasMany方法传递附加参数来覆盖外键和本地键:

return$this->hasMany('App\Comment','foreign_key');
返回$this->hasMany('App\Comment','foreign_key','local_key');
您应该这样定义您的关系:

Employee.php

//经理有很多员工
公共职能雇员(){
返回$this->hasMany(Employee::class,'supervisor');
}
//雇员为经理工作
公共职能经理(){
返回$this->belongsTo(Employee::class,'supervisor');
}
然后在控制器中:

app/Http/Controllers/SomeCoolController.php

$employees\u with_manager=employees::with('manager')->get();
返回视图('employee/index')->带('employees',$employees\u带\u manager);
因此,在您看来,这样做就足够了:

employee/index.blade.php

@foreach($employees作为$employee)
{{$employee->manager->name}
@endforeach

您不应该使用
$manager
。删除
$
,使其看起来像
$employee->manager->name
。感谢您的帮助,您的假设是正确的,但事实并非如此work@AlexG真奇怪。它会抛出错误吗?我还没有测试我的代码,但正如我所看到的,没有什么问题。这一个工作起来很有魅力!!令人困惑的是,yoy是如何浏览“员工”的,你只通过“$employees\u with\u manager”使用“with”表示“抱歉,我是laravelGlad的新手”来帮助你。不明白你的问题?您是指数组中视图循环的加载方式还是关系的加载方式?为了给你一个更好的答案,你忘了Employee.php belongsTo中的一个“:”,我去编辑了它,但不让我编辑