【发布时间】:2015-03-01 10:53:45
【问题描述】:
从 cakephp 2 应用程序开始,我一直试图在我的模型中使用 $tablePrefix。 这在 Cake 3 中仍然可用吗?或者我该如何使用其他东西(请解释)。
【问题讨论】:
标签: cakephp cakephp-3.0
从 cakephp 2 应用程序开始,我一直试图在我的模型中使用 $tablePrefix。 这在 Cake 3 中仍然可用吗?或者我该如何使用其他东西(请解释)。
【问题讨论】:
标签: cakephp cakephp-3.0
表前缀暂时不存在了。有一个公开的 PR,但目前尚不清楚何时以及是否会成功:
https://github.com/cakephp/cakephp/pull/4505
正如 Lorenzo 在 cmets 中提到的,另一种方法可能是使用事件来初始化带有前缀表名的模型:
对于仍然希望在表中支持前缀的人,有一种方法可以使用事件来支持它。这可能适用于所有表操作。将其添加到您的 bootstrap.php 文件中:
EventManager::instance()->on('Model.initialize', function ($event, $instance) { $instance->table('prefix_' . $instance->table()); });
https://github.com/cakephp/cakephp/pull/4505#issuecomment-76154855
【讨论】:
要像在2.x 中那样获取每个表的前缀,只需在表类中执行此操作:
public function initialize(array $config) {
$this->table('my_prefix_' . $this->table());
...
}
【讨论】:
我正在将一些 cake2.x 代码迁移到 cake3。到目前为止,在 bootstrap.php 中对 ndm 的代码进行了轻微的修改,对我来说是这样的:
Cake\Event\EventManager::instance()->on('Model.initialize', function ($event) {
$instance = $event->subject;
if ($instance->defaultConnectionName() == 'default') {
$instance->table('prefix_' . $instance->table());
}
});
【讨论】: