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
- 从表
- 身份证
- 名字
- 姓
- 角色
- 身份证
- 名字
- 姓
- 角色
- 身份证
- 头衔
- 所有者id
- 从表
- 名字
- 姓
- 角色
- 身份证
- 头衔
- 所有者id
- 从表
- 名字
- 姓
- 角色
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();
}