Yii2-mongodb 之坑

2016-08-27  本文已影响0人  孔咯

最近在用Yii2 + mongodb做个小项目,该笔记用于记录使用过程中的不便之处,将来扩展之。

  1. 插入数据指定_id:ActiveRecord::insertInternal方法中,会将数据库返回结果中的_id值覆盖当前AR的attributes中的_id,当插入数据指定了_id时,会被NULL值覆盖掉。
  2. 搜索_id为非ObjectId且包含大写字母的记录:底层调用ensureMongoId时,new ObjectId($id),会更改$id值转为小写字符,导致搜索结果为空。
  3. 对数据结构含层级的情况支持程度不够,比如下面的结构,如果希望将Location实例化为对象,没有现成的基类可用,而且hasOne, hasMany也无法支持$this->hasOne(City::className(), ['_id' => 'location.province_id'])这种情况。
{
  "_id": "sp_57c106ce1244e70",
  "name": "空间名称"
  "location" : {
        "coordinate" : [ 
            116.403875, 
            39.915168
        ],
        "province_id" : 110000,
        "city_id" : 110100,
        "district_id" : 110101,
        "street" : "望京宏泰东街",
        "building" : "绿地中心B座"
    }
}
  1. 打算做个ConstActiveRecord,数据源从文件读取,但需要拥有AR各项特性。
上一篇 下一篇

猜你喜欢

热点阅读