用大写烤盘

时间:2015-04-23 11:36:32

标签: php cakephp cakephp-3.0 cakephp-bake

我正在将蛋糕3.0安装在约定之外的数据库中,所有表都用大写字母进行烘焙返回此错误:

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

您是否有办法设置Inflector以识别带有大写字母的烘焙表?

2 个答案:

答案 0 :(得分:2)

不幸的是,如果现有数据源不遵循约定,则bake实用程序无法为您烘焙所有内容。您需要自己创建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');
    }

}

完成后,您可以使用基于此表对象的bake实用程序创建控制器/视图。

答案 1 :(得分: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