我将 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 来识别大写字母的烘焙表吗?
我将 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 来识别大写字母的烘焙表吗?
我发现这在使用非标准表名时很有帮助:
$> 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
不幸的是,如果现有数据源未遵循约定,则 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');
}
}
一旦你有了它,你就可以使用基于这个表对象的烘焙实用程序创建控制器/视图。