【问题标题】:WHERE EQUALS TO SUBQUERY SELECT哪里等于子查询选择
【发布时间】:2020-07-21 07:15:27
【问题描述】:

我只是想知道如何将此查询转换为 laravel eloquent 查询。

"SELECT *  FROM vw_part_supplier 
            LEFT JOIN purchase_request_detail ON vw_part_supplier.part_supp_id = purchase_request_detail.prd_part_supp_id
            WHERE (
            part_status = 'ACTIVE'
            AND part_supp_id not IN (SELECT prd_part_supp_id FROM purchase_request_detail WHERE prd_pr_id = $id) 
            AND part_supp_supplier_id = (SELECT pr_supplier_id FROM purchase_request WHERE pr_id = $id)
            AND  part_prod_grp_id = (SELECT pr_prod_grp_id FROM purchase_request WHERE pr_id = $id)
            AND  part_supp_ratio!=0)
            ORDER BY part_name,part_code,part_subcode";

我已经完成了部分,但只到了 where not IN。 任何帮助肯定会受到赞赏。谢谢!

【问题讨论】:

  • SO 不是编码服务。请分享您的最佳尝试以及您遇到的具体错误。
  • 是的,可以使用 eloquents 查询生成器来完成。
  • 我并不是说 SO 是一种编码服务,我所要求的只是一些帮助,因为这就是我认为 SO 是什么,我的问题是基于我在这个问题中看到的善意用户甚至没有显示他/她遇到的任何错误。 link

标签: laravel eloquent laravel-eloquent-resource


【解决方案1】:

我相信你已经尝试并到达了不进入的地方,这是变得棘手的一点,但我也相信你可以搜索更多的答案。

无论如何我会为你解决一条线,其余的只是按照同样的心态:

AND part_supp_id not IN (SELECT prd_part_supp_id FROM purchase_request_detail WHERE prd_pr_id = $id)

我假设您在这里遇到的问题是嵌套选择,这就是它阻止您的原因。

 ->whereNotIn('part_supp_id', function ($query) use($id) {
                $query->from("purchase_request_detail")
                      ->where("prd_pr_id", $id)
                      ->select("prd_part_supp_id");
          })

【讨论】:

  • 我已经用我自己的解决方案解决了这个问题,无论如何谢谢你的回复。
【解决方案2】:

我已经解决了。

public function getAvailPartsList($pr_id = 0){

        $ids = $this->model
                    ->select('pr_supplier_id','pr_prod_grp_id')
                    ->from('purchase_request')
                    ->where('pr_id','=',$pr_id)
                    ->get();

        $pr_supplier_id = $ids[0]['pr_supplier_id'];
        $pr_prod_grp_id = $ids[0]['pr_prod_grp_id'];

        $result = $this->model->select('*')
                            ->from('vw_part_supplier')
                            ->leftJoin('purchase_request_detail', 'vw_part_supplier.part_supp_id','=','purchase_request_detail.prd_part_supp_id')    
                            ->where('vw_part_supplier.part_status', '=', 'ACTIVE')
                            ->whereNotIn('vw_part_supplier.part_supp_id', function ($y) use ($pr_id){
                                        $y->select('prd_part_supp_id')
                                            ->from('purchase_request_detail')
                                            ->where('prd_pr_id', '=', $pr_id);
                                    })
                            ->where('vw_part_supplier.part_supp_supplier_id', '=', $pr_supplier_id)
                            ->where('vw_part_supplier.part_prod_grp_id', '=', $pr_prod_grp_id)
                            ->where('part_supp_ratio','!=',0)
                            ->get(); 

        return $result;                 

    }

无论如何,感谢您的所有回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-09
    • 2017-03-23
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多