如果你模型中使用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();