我正在将蛋糕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以识别带有大写字母的烘焙表?
答案 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