我的数据库表中有员工列表:
表:员工
员工型号代码:
public function workplace()
{
return $this->morphTo();
}
公司型号代码:
public function workers()
{
return $this->morphMany('App\Employee', 'company');
}
分公司型号代码:
public function workers()
{
return $this->morphMany('App\Employee', 'company');
}
现在我以不同的形式获取用户工作:
$userWorkplaces = Employee::where('user_id', Auth::id())->get();
$workplace_info = [];
foreach ($userWorkplaces as $workplace) {
if($workplace->company_type == "App\Company") {
$company = Company::findOrFail($workplace->company_id);
$type = 'Company';
} elseif($workplace->company_type == "App\Branch") {
$company = Branch::findOrFail($workplace->company_id);
$type = 'Branch';
}
$workplace_info[] = [
'company' => $company->name,
'type' => $type
];
}
dump($workplace_info);
结果:
array:3 [
0 => array:2 [
"company" => "Mahorat"
"type" => "Company"
]
1 => array:2 [
"company" => "Babolo"
"type" => "Company"
]
2 => array:2 [
"company" => "Филиал Махорат"
"type" => "Branch"
]
]
如何通过在模型中创建 Laravel 关系来轻松获得样本结果?
您必须更改Employee
关系函数名称,company
因为您在员工表中有company_id
和company_type
字段
员工型号代码:
public function company()
{
return $this->morphTo();
}
现在获取数据
$employees = Employee::where('user_id', Auth::id())->get();
$workplace_info = [];
foreach($employees as $employee){
$workplace_info[]['company'] = $employee->company;
$workplace_info[]['type'] = get_class($employee->company);
}
dd($workplace_info);
详情https://laravel.com/docs/5.6/eloquent-relationships#polymorphic-relations
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句