【问题标题】:Bake Tables with Uppercase用大写字母烘焙表
【发布时间】:2015-07-01 13:39:45
【问题描述】:

我将 cake 3.0 安装在约定之外的数据库中,所有表都带有大写字母,使得 bake 返回此错误:

异常:SQLSTATE[42S02]:未找到基表或视图:1146 [/var/www/project/vendor/cakephp/cakephp/src/Database/Schema/Collection 中不存在表 'db.c_a_d_b_e_m' .php,第 130 行]

你有什么方法可以设置 Inflector 来识别大写字母的烘焙表吗?

【问题讨论】:

    标签: php cakephp cakephp-3.0 cakephp-bake


    【解决方案1】:

    我发现这在使用非标准表名时很有帮助:

    $> php bin/cake.php bake model PLURAL_MODEL_NAME_HERE --table NON_STANDARD_TABLE_NAME_HERE
    

    然后,你可以运行模板/控制器

    $> php bin/cake.php bake controller PLURAL_MODEL_NAME_HERE
    $> php bin/cake.php bake template PLURAL_MODEL_NAME_HERE
    

    【讨论】:

      【解决方案2】:

      不幸的是,如果现有数据源不遵循约定,则烘焙实用程序无法为您烘焙所有内容。您需要自己创建Table Objects 并在其中设置自定义表名。因此,对于您展示的示例,创建一个 src/Model/Table/Cadbem.php 文件并将自定义表名称设置为 initialize 方法:

      namespace App\Model\Table;
      
      use Cake\ORM\Table;
      
      class CadbemTable extends Table
      {
      
          public function initialize(array $config)
          {
              $this->table('CADBEM');
          }
      
      }
      

      一旦你有了它,你就可以基于这个表对象使用烘焙实用程序创建控制器/视图。

      【讨论】:

      • 感谢您的帮助,我按照您说的创建了表格对象,但仍然报错。
      • linux 上 cake3 的 bin 文件夹内运行 ./cake bake model CADBEM
      猜你喜欢
      • 2011-12-18
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      相关资源
      最近更新 更多