mysql - 根据列值连接 3 个表 - Laravel
问题描述
潜在客户表
- ID
- 标题
- owner_id
- from_table
员工表
- 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) // 从 EMPLOYEE TABLE 获取数据,即 LEADS TABLE + EMPLOYEE TABLE
- ID
- 标题
- owner_id
- from_table
- 名
- 姓
- 角色
if(leads.from_table == admin) // 从 ADMIN TABLE 获取数据,即 LEADS TABLE + ADMIN TABLE
- ID
- 标题
- owner_id
- from_table
- 名
- 姓
- 角色
解决方案
我认为您应该更改数据库结构以使用多态关系,它们完全符合您的需求 - https://laravel.com/docs/5.8/eloquent-relationships#polymorphic-relationships
推荐阅读
- rust - 预期 struct std:vec:Vec 找到 struct std:collections:hash_map:Keys
- prolog - swi prolog中的无向图
- sql-server - 试图将 MS SQL Server 表中的值放入 Excel VBA 中的表单中的列表框
- javascript - Vue.js:如何在选择下拉框中获取选项的属性?
- node.js - 合并没有重复的数组 | 节点 | 蒙哥达
- javascript - 元素未在画布上呈现
- docker - Docker 容器不回复主机中的客户端应用程序
- powerbi - 按不同级别聚合时的测量误差
- tfs - 可以使用 GIT 访问哪些 TFS 2018 存储库?
- ios - 如何在 React Native 的 Alert 组件中添加 Star Rating?