【问题标题】:Empty or truncate table with RedBean PHP?使用 RedBean PHP 清空或截断表?
【发布时间】:2011-05-19 21:04:15
【问题描述】:

我正在使用 RedBean PHP 进行测试,我非常喜欢它,但是我不知道如何截断表格。我可以获取所有的 bean 并删除它们,但这似乎很麻烦。

【问题讨论】:

    标签: php sql orm redbean


    【解决方案1】:

    在 RedBean 1.3 中,您可以使用 R::wipe($type) 截断表。

    【讨论】:

      【解决方案2】:

      RedBean 只是一个 ORM 工具 (AFAIK),所以如果您的后端数据库是基于 SQL 的,您可以简单地执行如下 SQL 语句:TRUNCATE TABLE yourTable;

      直接通过 RedBean 执行查询

      适配器

      适配器是与 RedBean 的数据库通信的类。这个适配器 可以执行查询来操作数据库。获取此实例 适配器使用:

      $adapter = $toolbox->getDatabaseAdapter();
      

      来自http://www.redbeanphp.com/downloads/redbean.pdf - 1.3 http://www.redbeanphp.com/manual/manual.pdf - 2.0

      【讨论】:

      • 得到适配器后,你会这样做:$adapter->exec('TRUNCATE TABLE yourtable');
      【解决方案3】:

      像这样擦除单个表:

      R::wipe($table);
      

      像这样擦除 MySQL 模式中的所有表:

      function CleanAllTables() {
          $tables = R::getCol(' show tables ');
          foreach ($tables as $table) {
              R::wipe($table);
          }
      }
      

      MySQL:

      TRUNCATE TABLE <table_name>
      

      使用 RedBean 适配器

      执行
      $adapter->exec('TRUNCATE TABLE <table_name>');
      

      这应该可以完成工作! :)

      【讨论】:

        【解决方案4】:

        老问题,但值得一提的是,RedBean 4.0+(可能还有旧版本)在使用各种 N-M 关系映射时会使用外键。

        因此,在这种情况下,就我而言,为了解决这个问题,有必要将外键检查设置为 0。

        R::exec('SET FOREIGN_KEY_CHECKS = 0;');
        R::wipe('tablename');
        

        【讨论】:

          猜你喜欢
          • 2014-09-20
          • 2021-03-02
          • 2012-06-02
          • 1970-01-01
          • 2016-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多