猿问

Lumen / Laravel 问题中的多个 Where 有查询

我只想在这种特定情况下寻求帮助。因此,在我的应用程序中,我们希望有一个全局搜索功能,您可以在其中放置 1 个字符串,然后我们必须使用 laravel eloquent 在数据库中的多种情况下搜索该字符串,但是这已经成为问题,因为我有多个 where has 然后我有withcount(我稍后会展示)。有人可以帮我解决这个问题吗?将不胜感激


这是代码


    $result = [];

    $sort_order = "DESC";

    $post_param = $request->json()->all();

    $filters = $post_param['filters'];


    if($post_param['sortOrder'] > 0)

    {

        $sort_order = "ASC";

    }


    $financing_applications   = $this->financing_application->model();


    $data                     = $financing_applications::with('financing_application_data.business_type','financing_product_approval.financing_product')->withCount('financing_application_attachments as attachment');


    foreach($filters as $key => $filter){

        $value = $filter['value'];

        if($value != ""){

            switch($key){

                case "start_date_range":

                    $data   = $data->where('submission_date','>=',$value);

                    break;


                case "end_date_range":

                    $data   = $data->where('submission_date','<=',$value);

                    break;


                case "status":

                    $data   = $data->where($key,"LIKE","%$value%");

                    break;


                case "attachment_count":

                    $data   = $data->having('attachment_count','=',$value);

                    break;


                case "company_name":

                case "telephone":

          

                    });    

            }

        }

    }


因此,在这种情况下,我的预期结果是能够使用所有案例并将其组合到 switch 语句中的“全局”案例中。


有没有人有同样的问题并有解决方案?上面的全局不起作用,因为 where 和 whereHas 应该是 AND 不是 OR...我一直在寻找解决方案,但它太复杂了,我不知道这个问题的确切关键字


这是您需要的一些信息


"laravel/lumen-framework": "5.3.*"

更新:如果你们中的一些人误解了我的问题,我很抱歉,所以问题仅在于“全局”案例,现在与另一个案例在于“whereHas”语法来过滤关系。如果全局应该能够组合“Where”和“WhereHas”,我已经做到了,但是因为没有“orWhereHas”(据我所知),所以它将返回空,因为它被识别为“AND”语句


人到中年有点甜
浏览 120回答 1
1回答

神不在的星期二

我找到了解决这个问题的方法,我必须用 has 替换 whereHas 语法,在这种情况下,它可以具有我需要的 OR 逻辑。
随时随地看视频慕课网APP
我要回答