Yii2-mongodb 之坑

最近在用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各项特性。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 前面我简单介绍了下MongoDB怎样插入数据.那么数据插入到数据库中,就可能会修改数据.在MongoDB中,它提供...
    super_paul阅读 6,872评论 0 0
  • Hive的部署解压缩、重命名、设置环境变量在目录$HIVE_HOME/conf/下,执行命令mv hive-def...
    lufaqiang阅读 454评论 0 0
  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 5,346评论 2 46