我有一个complaints
表,该表存储用户注册的所有投诉,并将这些投诉分配给某些用户以解决它们。
我没有任何关系表可以映射将哪个投诉分配给哪个用户,实际上我有一个表employees_records
可以存储分配了一些投诉的所有用户的信息。
(由于这些代码位于实时服务器上,因此我们暂时无法更改数据库结构)
现在,我们通过以下方式将哪个投诉分配给哪个用户
$v=Complaints::find($id);
$dUser = EmployeesRecord::whereJsonContains('categories', "$v->category_id")
->whereJsonContains('sub_categories', "$v->code_id")
->whereJsonContains('zones', "$v->zone_id")
->whereJsonContains('wards', "$v->ward_id")
->whereJsonContains('cities', "$v->city_id");
->where('department_id',$v->department_id)->first();
如果$dUser
为空,则表示未将投诉分配给任何用户,如果我们找到了用户,则表示已将投诉分配给了该用户。
在进行投诉登记时,我们会获得类别,子类别,区域,病房,城市,部门ID数据。将根据该ID来检查是否有任何用户。
最后一个问题:
我想获得所有未分配给任何用户的投诉。但是,了解投诉是否已分配给用户的过程(如上所述)对我来说很复杂。 而且我无法在查询中映射此内容。我想要一个高性能的查询,因为我正在报表生成中使用它。
我尝试过的。
我试图首先解决所有投诉
$complaints=Complaints::all();
$assigned_complaints=[];
$un_assigned_complaints=[];
foreach($complaints as $k => $v)
{
$dUser = EmployeesRecord::whereJsonContains('categories', "$v->category_id")
->whereJsonContains('sub_categories', "$v->code_id")
->whereJsonContains('zones', "$v->zone_id")
->whereJsonContains('wards', "$v->ward_id")
->whereJsonContains('cities', "$v->city_id");
->where('department_id',$v->department_id)->first();
if($dUser)
{
$assigned_complaints[]=$k;
}
else
{
$un_assigned_complaints[]=$k;
}
}
$total_assigned_complaints=count($assigned_complaints);
$total_un_assigned_complaints=count($un_assigned_complaints);
但是我想要一个解决方案,该解决方案适用于Complaint
模型查询,而不需要循环处理投诉数据。
由于数据量很大。