用大写字母烘焙表
Posted
技术标签:
【中文标题】用大写字母烘焙表【英文标题】: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 来识别大写字母的烘焙表吗?
【问题讨论】:
【参考方案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以上是关于用大写字母烘焙表的主要内容,如果未能解决你的问题,请参考以下文章