【问题标题】:cakephp 3.0 using tableprefix?cakephp 3.0 使用表前缀?
【发布时间】:2015-03-01 10:53:45
【问题描述】:

从 cakephp 2 应用程序开始,我一直试图在我的模型中使用 $tablePrefix。 这在 Cake 3 中仍然可用吗?或者我该如何使用其他东西(请解释)。

【问题讨论】:

    标签: cakephp cakephp-3.0


    【解决方案1】:

    表前缀暂时不存在了。有一个公开的 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

    【讨论】:

    • 谢谢!难怪我找不到它。遗憾的是,我在使用此解决方法时无法使用 cake。遗憾的是 cakephp 的“制造者”生活在与用户不同的世界............
    • 为什么在使用该解决方法时不能使用 cakephp?
    • @Snelweg 这不是一种解决方法,它是这样做的正确位置。我想知道为什么它在连接设置中丢失,但在与 Lorenzo 讨论后,我意识到这实际上应该在表级别完成。 ORM 可以支持使用或根本不了解表的其他数据源,例如 CSV、REST 或图形数据库。前缀仍然可以通过简单地使用 Configure 类从配置中读取前缀来进行配置。
    • @JoséLorenzo 我的意思是烘焙而不是蛋糕。对不起
    • @ndm 这对我不起作用.. 我使用的是 cakephp 3.x,我把这段代码 EventManager::instance()->on('Model.initialize', function ( $event, $instance) { $instance->table('5p_' . $instance->table()); }); ** 在 *bootstrap.php 中,我有这个错误说 *Fatal error: Call to a member function table() on null in C:\xampp\htdocs\5p_group\config \bootstrap.php
    【解决方案2】:

    要像在2.x 中那样获取每个表的前缀,只需在表类中执行此操作:

    public function initialize(array $config) {
        $this->table('my_prefix_' . $this->table());
        ...
    }
    

    【讨论】:

      【解决方案3】:

      我正在将一些 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());
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-19
        • 2011-06-09
        • 2013-10-09
        • 2011-01-03
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多