TP5.0一对一关联模型内使用关联模型条件查询。

之前项目都是直接在控制器里面写JOIN查询的,这次项目试了下用关联模型,踩了很多坑,记录一下。

主表模型如下:

class Members extends Model{

    //关联用户信息表
    public function MembersShopInfo(){
    	//uid为MembersShopInfo字段,ID为Members表自增ID
        return $this->hasOne('MembersShopInfo','uid','id');
    }

    //用户列表
    public function get_members_list($search){
    	$page = (isset($search['page']) && (int)trim($search['page'])) ? (int)$search['page'] : 1;
        $limit = (isset($search['limit']) && (int)trim($search['limit'])) ? (int)$search['limit'] : $this->limit;
        $where['Members.is_del'] = 0;   //主表搜索条件要加表前缀
        $res = $this->haswhere('MembersShopInfo',['dealer_id'=>$search['dealer_id']])
        ->with('MembersShopInfo')
        ->where($where)
        ->limit($limit*($page - 1),$limit)
        ->order('id DESC')->select();
        return $res;
    }
}

关联表模型文件必须有,内容可以是空的。

haswhere里第一个参数填关联的表,第二个参数填关联表的条件参数。(不用加表名前缀)
where里写主表的查询条件。(要加表前缀)

另外 haswhere写在with后面的话会报错
method not exist:think\db\Query->haswhere
在这里插入图片描述

写在with前面就能正常使用了。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值