netyum 2011-03-29 10:22:56 3567次浏览 11条回复 0 0 0

为什么gii在仅创建一个模型的时候,也会扫描本库所有表,现在问题是我们的开发数据库有仅2000多少表,直接扫死。

  • 回复于 2011-03-29 10:27 举报

    gii是可以通过数据库表的外键,生成模型类的关联对象,如果生成的表在数据库设置了外键,那肯定会扫描很多表。

  • 回复于 2011-03-29 10:57 举报

    当然是没有外键了,难到是先扫,再找关系。

  • 回复于 2011-03-29 11:01 举报

    这个似乎不可以避免,因为他总要SHOW TABLES一下……

    有两种方法
    第一你试试看手写一个CActiveRecord;
    第二可以把需要的表单独分理出来,然后用Gii来建……

    话说2000多张表,这么凶残?

  • 回复于 2011-03-29 11:03 举报

    楼上说的貌似有道理:)

  • 回复于 2011-03-29 11:04 举报

    路过+学习{:3_59:}

  • 回复于 2011-03-29 11:17 举报

    首先,我用的是oracle,不是mysql ,
    其实都一样,比如说mysql, 当进入gii后,选择模型,输入一个表名,然后点preview,此时查看日志,会看到扫描了所有表

  • 回复于 2011-03-29 11:30 举报

    我有一个傻一点,但是很直接的办法, 所谓的gii无非就是按照一个格式 套一个 activerecord class出来,外加关系和里面的字段,完全可以直接把这张表单独放到一个db里,扫描出来东西以后,然后mian.php 更新下。。就解决了,只要2个db 中对应的表结构都一样,因为使用的pdo 所以不同数据库不会有差别。

  • 回复于 2011-03-29 11:31 举报

    楼上想法很好,这貌似比gii要快很多啊!

  • 回复于 2011-03-29 11:33 举报

    如果想一下生成所有模型类的话,可以在 Table Name 栏中输入一个星号 '*' 。这样就可以通过一次点击就对所有的数据表生成相应的模型类。

    这样也比较快,但是全扫描估计你还是受不鸟。

  • 回复于 2011-03-29 11:34 举报

    我个人觉得 gii不是为2000张表的大量级应用开发的。。。应该 扬长避短。

  • 回复于 2011-03-29 11:39 举报

    哎呀,高手真多,今天又学习了~

您需要登录后才可以回复。登录 | 立即注册