yii2 searchmodel 连表查询

13 篇文章 0 订阅

我这里是OrderContract.php 和OrderContractSearch.php
首先在OrderContract.php里定义要关联的表

    public function getCustomerMsg(){
    	return $this->hasOne(CustomerMsg::className(), ['id'=>'customer_id']);
    }

注意这里的getCustomerMsg 命名会影响到search里的连表名称,比如我这里改为getCustomerMsgTest,那么search里joinwith表名也要改为
然后在OrderContractSearch.php里customerMsgTest, (c要小写!!!)

 $query = OrderContract::find()->alias('oc');
        $query->joinWith(['customerMsg']);

然后就是表别名,似乎只能给一个表加别名,同时给2个表加别名会报错。

至于查询语句记录一下 OR和AND同时存在的用法

$query->andFilterWhere([
            'shop_id' => $this->shop_id,
            'status' => $this->status,
            'customer_charge'=>$this->customer_charge,
        ]);
        $query->andFilterWhere(['OR',                                                    
                            ['like', 'oc.mobile', $this->mobile],
                            ['like', 'oc.address', $this->mobile],
                            ['like', 't_customer_msg.customer_name', $this->mobile]
                    ]);

        $query->andFilterWhere(['like', 'name', $this->name])
            ->andFilterWhere(['like', 'code', $this->code])
            ->andFilterWhere(['like', 'remarks', $this->remarks]);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值