tp5.1 关联条件查询haswhere 用field限制字段失效的问题

如果你模型中使用haswhere 查询之后再用field限制字段你会发现完全失效,查询出的字段包含所有值

如:

错误写法

$data = PayOrderModel::hasWhere('user', ['id'=>$this->USER->id])
    ->field('order_title,order_number,order_price,pay_type,actual_price,pay_time')
    ->where('status', ['=',2], ['=',4], 'or')
    ->order('id','desc')
    ->limit($start,$limit)
    ->select();

那正确写法是什么呢?

正确的应该是在haswhere的第三个参数中写入要限制的字段

需要注意的是,限制完了后如果两个模型存在相同的字段需要加上表名前缀或模型名前缀

推荐使用模型名的方式

$data = PayOrderModel::hasWhere('user', ['id'=>$this->USER->id], 'order_title,order_number,order_price,pay_type,actual_price,pay_time')
    //->field('order_title,order_number,order_price,pay_type,actual_price,pay_time')
    ->where('status', ['=',2], ['=',4], 'or')
    //->order('id','desc')
    //下面这两种方式任选一种
    //使用表名
    //->order('pay_order.id','desc')
    //使用模型名
    ->order('PayOrderModel.id','desc')
    ->limit($start,$limit)
    ->select();
posted @ 2020-12-22 10:46  makalo  阅读(1782)  评论(0编辑  收藏  举报