具有自定义条件的Laravel雄辩的查询

时间:2020-06-15 13:47:37

标签: php laravel

我有一个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模型查询,而不需要循环处理投诉数据。 由于数据量很大。

0 个答案:

没有答案