线索表
- ID
- 标题
- owner_id
- 来自_表
员工表
- ID
- 名字
- 姓氏
- 角色
管理表
- ID
- 名字
- 姓氏
- 角色
$users = Leads::query();
return Datatables::make($users)
->editColumn('owner_id', function ($user) {
if($user->from_table == 'employee'){
$emp = Employee::where('id',$user->owner_id)->first();
return $emp->first_name.' '.$emp->last_name.' ('.$emp->role.')';
}
if($user->from_table == 'admin'){
$admin = Admin::where('id',$user->owner_id)->first();
return $admin->first_name.' '.$admin->last_name.' ('.$admin->role.')';
}
})
上述解决方案工作正常,但我们无法在数据表中按列进行单独搜索。
我想要的是加入查询,例如:
if(leads.from_table == 员工) //从 EMPLOYEE TABLE 获取数据,即 LEADS TABLE + EMPLOYEE TABLE
- ID
- 标题
- owner_id
- 来自_表
- 名字
- 姓氏
- 角色
if(leads.from_table == admin) //从 ADMIN TABLE 获取数据,即 LEADS TABLE + ADMIN TABLE
- ID
- 标题
- owner_id
- 来自_表
- 名字
- 姓氏
- 角色
最佳答案
我认为你应该改变你的数据库结构以使用多态关系,它们完全符合你的需求 - https://laravel.com/docs/5.8/eloquent-relationships#polymorphic-relationships
关于mysql - 根据列值连接 3 个表 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60001225/