yii2的AR模型对id自动去重的问题

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

问题如下:

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)  返回正确的结果了

 

posted @ 2019-04-17 13:39  web200  阅读(587)  评论(0编辑  收藏  举报