1

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

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

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

4

2 回答 2

3

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

$> 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
于 2018-11-20T19:03:20.377 回答
2

不幸的是,如果现有数据源未遵循约定,则 bake 实用程序无法为您烘焙所有内容。您需要自己创建表格对象并在其中设置自定义表格名称。因此,对于您展示的示例,创建一个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');
    }

}

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

于 2015-04-23T13:49:31.617 回答