複雜構造器laravel連表多表綜合

/**
     * 商會商機列表
     * @param type $condition
     * @param type $field
     * @param type $order
     * @param type $curpage
     * @param type $pageSize
     * @return type
     */
    public function getTcList($condition,$field="*",$order,$curpage,$pageSize){
        //DB::connection()->enableQueryLog();
        $obj=TradeChancesModel::from('icc_trade_chances as itc')
                ->leftJoin("icc_tc_label as itl","itc.id","itl.tc_id")->leftJoin("icc_user as iur","itc.u_id","iur.id");
        foreach($condition as $k=>$v){
            if(is_array($v)){
                if($k=='wherein'){
                    $obj->whereIn($v[0],$v[1]);
                }else{
                    $obj->where($k,...$v);
                }
            }else{
                $obj->where($k,$v);
            }
        }
        $obj->select(explode(",", $field))->distinct(["itc.id"]);
        $count=$obj->count("itc.id");
        $pagetotal = ceil($count/$pageSize);
        $offset = ($curpage -1) * $pageSize;
        $list=$obj->offset($offset)->limit($pageSize)->get();
        $pageInfo = [
            'total' =>  $count,
            'curpage'   =>  $curpage,
            'pagetotal' =>  $pagetotal
        ];
        return [
            'list'      =>  $list,
            'pageInfo' => $pageInfo
        ];
    }
public function getProjectList($condition,$field="*",$order,$curpage,$pageSize){
        $obj=MemberProjectsModel::with(["projects"=>function($query)use($condition){
                    //$query->where('p_name',"項目1");
                }])->whereHas("projects",function($query){
                    //$query->where('p_name',"項目1");
                });
        $obj=$this->sqlCondition($condition,$obj);
        $obj->select(explode(",", $field));
        $count=$obj->count();
        $pagetotal = ceil($count/$pageSize);
        $offset = ($curpage -1) * $pageSize;
        $list=$obj->offset($offset)->limit($pageSize)->get();
        $pageInfo = [
            'total' =>  $count,
            'curpage'   =>  $curpage,
            'pagetotal' =>  $pagetotal
        ];
        return [
            'list'      =>  $list,
            'pageInfo' => $pageInfo
        ];
        
    }
    public function sqlCondition($condition,$obj){
        foreach($condition as $k=>$v){
            if(is_array($v)){
                if($k=='wherein'){
                    $obj->whereIn($v[0],$v[1]);
                }else{
                    $obj->where($k,...$v);
                }
            }else{
                $obj->where($k,$v);
            }
        }
        return $obj;
    }
    public function getOneInfo($condition,$field="*"){
        $res=TradeChancesModel::from('icc_trade_chances as itc')
                ->leftJoin("icc_tc_label as itl","itc.id","itl.tc_id")
                ->leftJoin("icc_user as iur","itc.u_id","iur.id")
                ->where($condition)
                ->select(explode(",", $field))
                ->first();
        return $res;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章