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