tp 里对数据库操作,比如:
SELECT id, name FROM user WHERE id = 1 ORDER BY create_time DESC LIMIT 1
会转换成类似这样的形式:
M('user')->field('id, name')->where(array('id' => 1))->order(array('create_time' => 'DESC'))->limit('1');
在不启用 ActiveRecord/ORM 的情况下,这么做的目的是不是通过连贯操作,将每个方法交给对应数据库驱动来实现,因为不同的数据库语句会有差异?(比如 limit/offset/rownum ),这样在切换驱动时保证原先 model 中的 sql 不需要重写?
还有个小白的问题,既然 SQL 标准在那,为何不同数据库连基本语句都还有差异?
还有 AR/ORM 实现的意义是什么?看到大家都争相实现,数据库本身就可以开启内存缓存查询结果,另外还有 redis/memcached 一大堆缓存工具,为何我要把记录映射成对象存到内存?另外并没有感觉到 get/set/add/save 用起来有多方便?还有跨表简直丧失。。。复杂的 sql 更别提了。。。这东西究竟有何意义?