Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于列值连接3个表-Laravel_Mysql_Laravel_Eloquent - Fatal编程技术网

Mysql 基于列值连接3个表-Laravel

Mysql 基于列值连接3个表-Laravel,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,铅表 身份证 头衔 所有者id 从表 员工表 身份证 名字 姓 角色 管理表 身份证 名字 姓 角色 上述解决方案工作正常,但我们无法在数据表中搜索按列的工业搜索 我想要的是连接查询,类似于: if(leads.from_表==员工) //从员工表获取数据,即LEADS表+员工表 身份证 头衔 所有者id 从表 名字 姓 角色 if(leads.from_table==admin) //从管理表获取数据,即LEADS表+管理表 身份证 头衔 所有者id 从表 名字 姓 角色 我

铅表

  • 身份证
  • 头衔
  • 所有者id
  • 从表
员工表

  • 身份证
  • 名字
  • 角色
管理表

  • 身份证
  • 名字
  • 角色
上述解决方案工作正常,但我们无法在数据表中搜索按列的工业搜索

我想要的是连接查询,类似于:

if(leads.from_表==员工) //从员工表获取数据,即LEADS表+员工表

  • 身份证
  • 头衔
  • 所有者id
  • 从表
  • 名字
  • 角色
if(leads.from_table==admin) //从管理表获取数据,即LEADS表+管理表

  • 身份证
  • 头衔
  • 所有者id
  • 从表
  • 名字
  • 角色

我认为您应该更改数据库结构以使用多态关系,它们完全符合您的需要-

from\u table列应包含父模型的类名

Add in Leads model

    public function fetchOwner()
    {
        return $this->morphTo();
    }

外接程序员工模型

   public function employee()
    {
        return $this->morphOne('App\Employee', 'fetchOwner');
    }

外接程序管理模型

public function employee()
    {
        return $this->morphOne('App\Admin', 'fetchOwner');
    }


感谢所有试图帮忙的人

我正在回答我自己的问题,因为我在到处挖掘了9天后找到了答案

因此,答案如下:

您可能希望在业务表中用所有者id替换所有者代码。

所以我将from_表更改为owner_类型&owner_类型现在应该包含类名作为值ex:changed admin to App\admin&employee to App\employee在数据库中

App\Admin.php

public function employee()
    {
        return $this->morphOne('App\Leads', 'owner');
    }


App\Employee.php

public function employee()
    {
        return $this->morphOne('App\Leads', 'owner');
    }

App\Leads.php

public function owner()
    {
        return $this->morphTo();
    }

感谢:(EddyTheDove)指出了确切的问题。

除非管理员不是员工,否则我不会将他们存储在单独的表中(至少不是他们的名字等)。是的,管理员不是员工,但他们可以将任何潜在客户分配给员工。错误:异常消息:尝试获取$users的非-objectdd()属性“first\u name”,并验证“fetchOwner”是否存在。from\u表列应包含父模型的类名。fetchOwner中显示null。顺便说一句,我通过修改代码和数据库解决了这个问题。
$users = Leads::with('fetchOwner');
return Datatables::make($users)

    ->editColumn('owner_id', function ($user) {
       return $user->fetchOwner->name;
    })

App\Admin.php

public function employee()
    {
        return $this->morphOne('App\Leads', 'owner');
    }


App\Employee.php

public function employee()
    {
        return $this->morphOne('App\Leads', 'owner');
    }

App\Leads.php

public function owner()
    {
        return $this->morphTo();
    }