tp6 多关联withJoin查询

记录:一个模型关联多个模型,进行查询
代码示例:

	protected $relationSearch = false;
    /**
     * @NodeAnotation(title="列表")
     */
    public function index()
    {        
        if ($this->request->isAjax()) {
            if (input('selectFields')) {
                return $this->selectList();
            }
            list($page, $limit, $where) = $this->buildTableParames();
            $count = $this->model
                ->withJoin(['systemCar','driver','supplier'],'left') 
                ->where($where)
                ->count();
            $list = $this->model
                ->withoutField('delete_time')
                ->withJoin(['systemCar','driver','supplier'],'left')
                ->where($where)
                ->page($page, $limit)
                ->order($this->sort)
                ->select()->each(function($item,$key){
                    //创建人类型:1-管理员,2-客户
                    if($item['create_people_type'] == 1){
                        $item['create_people'] =  Db::name('system_admin')->where(['id'=>$item['create_people']])->value('realname');
                    }else{
                        $item['create_people'] = Db::name('customer')->where(['id'=>$item['create_people']])->value('name');
                    }
                    //修改人类型:1-管理员,2-客户
                    if($item['update_people_type'] == 1){
                        $item['update_people'] = Db::name('system_admin')->where(['id'=>$item['update_people']])->value('realname');
                    }else{
                        $item['update_people'] = Db::name('customer')->where(['id'=>$item['create_people']])->value('name');
                    }
                    $item['create_time'] = $item['create_time'] ? date('Y-m-d H:i:s',$item['create_time']) : '';    
                    $item['update_time'] = $item['update_time'] ? date('Y-m-d H:i:s',$item['update_time']) : '';    
                    //开始配送时间,预计到达时间
                    $item['start_time'] = $item['start_time'] ? date('Y-m-d H:i:s',$item['start_time']) : '';    
                    $item['end_time'] = $item['end_time'] ? date('Y-m-d H:i:s',$item['end_time']) : '';   
                });
            $data = [
                'code'  => 0,
                'msg'   => '',
                'count' => $count,
                'data'  => $list,
            ];
            return json($data);
        }
        return $this->fetch();
    }

注意:
1,withJoin([‘systemCar’,‘driver’,‘supplier’],‘left’) 要放在withoutField() 函数之后
2,withJoin([‘systemCar’,‘driver’,‘supplier’],‘left’) 中第二个参数:
a/ 不填时,若未关联到数据时,则不显示
b/ 为 left 时,以当前表为主表进行查询,未关联到也会显示
c/ 为 right 时,以关联表为主表进行查询,未关联到也会显示
二、查询并显示关联表中的部分字段
 ->with(['pinpai'=>function($query){
            $query->field('pinpai.id as pinpaiid,pinpai_name');
        }])

(持续更新中…)

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值