mysql - 根据列值连接 3 个表 - Laravel

标签 mysql laravel eloquent

线索表

  • 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/

相关文章:

php - 方法调用之间的区别 $model->relation();和 $model-> 关系;

php - Laravel Eloquent 在哪里替换和比较

mysql - PHP单查询多个UPDATE影响AUTO_INCRMENT id而不是order_id

php - 如何在 Doctrine 中使用 CONVERT() 函数 MySQL

php - 在laravel中上传图片并将名称插入数据库

Laravel 5.4 调用未定义函数 Session::getMetadataBag()

PHP MySQL从下拉框选择中插入多个值

mysql - 优化 MySql 表中的索引

php - 如何在连接表(laravel)中获得最低价格

mysql - Laravel 条件选择 ->get