hightman
(Hightman)
1
Yii的ActiveRecord实现中是自动地对数据库表的结构进行分析的,也就是每一次创建/使用该模型(Model)时,均会对数据库服务器发起以下2条查询:
SHOW COLUMNS FROM table_name
SHOW CREATE TABLE table_name
对于数据库表比较多的项目是否造成了较多的性能影响呢,而事实上表结构的更动并非很频繁,这一块里有没有一种比较妥善的cache方案呢。
–
还有一个问题就是在 ActiveRecord 的多表对应关系中好像强制要求了对方必须是主键(PK)?或者换句话说就是在 LEFT JOIN ON 的首要条件两端的字段名称不能自定义。(好像经常有这样的情况用到,甚至这可能并非原标准字段名,而是经过CONCAT()再组合。)
虽然这些情况完全可以通过 createCommand(‘SQL’)来作到,但感觉建立关系时的 addtional options 里应该可以实现这一点?
qiang
(Qiang Xue)
2
你可以设置db connection的schemaCachingDuration来缓存schema。
关于relation的key指定问题,目前的做法的确不够灵活,不过应该可以通过指定’on’选项来设定join的条件。
hightman
(Hightman)
3
非常感谢回复. 正在学习Yii中, 架构做得相当大气, 非常喜欢!
通过 on 指定的 join 条件是附加的, 首要条件已经被限死在 local forigen key = Table2.primary_key
, 当然通过自行调整数据库的设计也能完成. 只是稍显遗憾.
qiang
(Qiang Xue)
4
你研究得很透彻。
的确是这样。或许可以允许指定空的key,这样,join就完全由’on’确定了。