如何为CakePHP插件使用表前缀?

如何为CakePHP插件使用表前缀?,cakephp,plugins,prefix,Cakephp,Plugins,Prefix,我想写一个插件,它有自己的数据库表。没有从schema.php文件创建表,我手动创建它们。然后我想为那个插件烘焙模型。但我也希望cake bake shell能够识别带前缀的表名,并理解它们属于该插件,以便在shell的选项中只显示带前缀的表 为了澄清这一点,插件可能有自己的模式。因此,有时不同插件的表名可能会冲突。为了避免任何冲突,我想可以使用表前缀。可以为CakePHP插件使用表前缀吗?如果答案是肯定的,那么如何为插件配置表前缀?我的首选是不要触摸app/Config/database.ph

我想写一个插件,它有自己的数据库表。没有从schema.php文件创建表,我手动创建它们。然后我想为那个插件烘焙模型。但我也希望cake bake shell能够识别带前缀的表名,并理解它们属于该插件,以便在shell的选项中只显示带前缀的表

为了澄清这一点,插件可能有自己的模式。因此,有时不同插件的表名可能会冲突。为了避免任何冲突,我想可以使用表前缀。可以为CakePHP插件使用表前缀吗?如果答案是肯定的,那么如何为插件配置表前缀?我的首选是不要触摸app/Config/database.php文件。相反,最好在插件本身中设置任何配置


另外,我正在使用CakePHP 2.4.1

在您的插件模型中使用
$tablePrefix

<?php
// Plugin/Example/Model/ExampleAppModel.php

App::uses('AppModel', 'Model');
class ExampleAppModel extends AppModel {

/**
 *  Table prefix
 */
    public $tablePrefix = 'example_';
}

我花了一段时间才弄明白。我在文件上看不太清楚

无需每次在默认数据库上更改它

只需在app/Config/database.php中添加一个包含前缀的数据库连接,并在烘焙时选择它


如果可用,请在命令中使用--connection,-c参数指示您的数据库(请参见bake的帮助)

这没关系,但是当您尝试为表“example\u awesometable”烘焙模型时,烘焙外壳将显示数据库中的所有表。它也不会忽略前缀,因此它会打印ExampleAwesometable,例如_awesometable。您可以通过运行以下命令来尝试查看它:
/Console/cake bake model--plugin Example
在为具有不同$tablePrefix的插件烘焙模型之前,转到Config/database.php并将“prefix”参数更改为“Example”。烘焙后,将“prefix”参数更改为以前的值。