首页 > 解决方案 > 根据列值连接 3 个表 - Laravel

问题描述

潜在客户表

员工表

管理表

$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

if(leads.from_table == admin) // 从 ADMIN TABLE 获取数据,即 LEADS TABLE + ADMIN TABLE

标签: mysqllaraveleloquent

解决方案


我认为您应该更改数据库结构以使用多态关系,它们完全符合您的需求 - https://laravel.com/docs/5.8/eloquent-relationships#polymorphic-relationships


推荐阅读