今天在开发优惠券模块的时候发现一个问题,获取到的某个用户的优惠券数量跟数据库中的实际数量不匹配。

问题如下:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
CouponBasic和Coupons是一对多的关系。
Coupons用AR模型关联CouponBasic查询的时候,返回的字段中不能有CouponBasic表的id字段,否则会被去重,得到的数目变少。

$query = Coupons::find()
    ->from(Coupons::tableName().' c')
    ->leftJoin(CouponBasic::tableName().' b','b.id=c.basic_id')
    ->select('b.id')
    ->asArray()
    ->all();

var_dump($query);  //array (size=7)   只得到7条数据,实际有55条coupons记录

 


解决办法是重命名id字段。
$query = Coupons::find()
    ->from(Coupons::tableName().' c')
    ->leftJoin(CouponBasic::tableName().' b','b.id=c.basic_id')
    ->select('b.id as b_id')  //重命名一下id
    ->asArray()
    ->all();

var_dump($query); //array (size=55)  返回正确的结果了

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄