thinkphp 关联查询 with

范例

$info=LeaseModel::with(
            [
                "fapiao"=>function($query) use($time_start,$time_end,$is_created,$is_done,$is_print){
                    $query->where('time_start','>=',$time_start);
                    $query->where('time_end','<=',$time_end);
                    if($is_done>0){
                        $query->where('is_done','>',$is_done);
                    }elseif($is_done==='0'){
                        $query->where('is_done','=',$is_done);
                    }
                    if($is_created>0){
                        $query->where('is_created','>',$is_created);
                    }elseif($is_created==='0'){
                        $query->where('is_created','=',$is_created);
                    }
                    if($is_print>0){
                        $query->where('is_print','>',$is_print);
                    }elseif($is_print==='0'){
                        $query->where('is_print','=',$is_print);
                    }
                },"lease_contract","lease_contract.ca","lease_contract.cb","lease_contract.cc","lease_contract.cd","propertyone","propertyone.property"
            ])->alias("a")
            ->join("lease_contract b","a.lease_id=b.id")
            ->join("property_one c","a.po_id=c.id")
            ->where($where)
            ->leftJoin("co name_a","name_a.id=b.a")
            ->leftJoin("co name_b","name_b.id=b.b")
            ->leftJoin("co name_c","name_c.id=b.c")
            ->leftJoin("co name_d","name_d.id=b.d")
            ->where($where)
            ->whereNull("b.delete_time")
            ->whereNull("c.delete_time")
            ->whereNull("name_a.delete_time")
            ->whereNull("name_b.delete_time")
            ->whereNull("name_c.delete_time")
            ->whereNull("name_d.delete_time")
            ->field("a.*")
            ->select();

多重调用 ,with多级关联 ,join ,

其中fields(a.*) 因为有表格join时候和本表中有键值冲突所以中使用 a.* 反正都用了关联模型

发表回复