最近在做Yii2的项目时, 发现了一个yii2 自带的Ar模型会自动对搜索出来的字段去重。
默认去重字段: id, 其他字段暂没发现
1. 例如:
1 public function fields 2 { 3 //aboutClass表的ID 4 id => about_class_id 5 }
如果搜索关系是一对多的关系,那么搜索出来的about_class_id 有重复,这时你给about_class_id 命名为id,因为yii2对id字段默认去重,就会出现数据条数变少的情况
解决方案:
1 public function fields 2 { 3 //换字段名称 4 aboutClassId => about_class_id 5 }
2. 例如
1 public function selectFields() 2 { 3 $data = \common\models\base\AboutClass::find() 4 ->select(' 5 //取别名ID 6 about_class_id id, 7 name, 8 type 9 ') 10 ->where(['status' => 5]) 11 ->asArray() 12 ->all(); 13 return $data; 14 }
这里的select里面的id字段也会同上一样,被默认去除重复数据, 解决方案和上面例子1一样。
总结:
Yii2会对AR模型里字段名id的数据去重。
以上为本人自身观点,如有不同见解,望不奢指教!同时,也希望对读者有所帮助。