当前位置: 首页 > 面试题库 >

Cakephp:如何使用迁移插入记录

郑俊美
2023-03-14
问题内容

我正在使用CakePHP
v3.x,并且试图弄清楚如何通过迁移工具插入一些记录。该文档仅列出了用于修改架构的方法。我是否需要使用原始SQL手动插入记录?


问题答案:

CakePHP 3的Migration插件是Phinx包装器插件,因此可以使用以下up()方法添加记录:

public function up() {
    // Save records to the newly created schema
}

public function down() {
    // Remove records
}

例如,你可以使用添加新用户TableRegistryup: -

public function up() {
    // Save records to the newly created schema
    $UsersTable = TableRegistry::get('Users');
    $user = $UsersTable->newEntity();

    $user->name = 'Joe Bloggs';
    $user->email = 'joe@example.com';

    $UsersTable->save($user);
}

如果使用,TableRegistry请不要忘use Cake\ORM\TableRegistry;了在迁移文件的顶部添加。

对于CakeDC的Migration插件,您可以使用回调在相关迁移文件中插入记录:-

public function after($direction) {
    if ($direction === 'up') {
        // Save records to the newly created schema
    } elseif ($direction === 'down') {
        // Remove records
    }
}

注意:如果您使用的是Postgres驱动程序,则当前存在一个错误,需要一个较小的解决方法才能完成此工作。



 类似资料:
  • 我有两个模型/表,它们具有“has and bomning to many”(HABTM)关系:和 我可以手动删除行,如下所示: 如何在联接表中插入新行?我找到的任何处理HABTM数据的文档都是专门引用表单的,但我的数据不是来自表单的。

  • 问题内容: MyBatis迁移将每个SQL文件分为两部分: 一种用于向前迁移一个版本 一种用于迁移回一个版本 如何使用Flyway回滚版本? 问题答案: 尽管Flyway支持回滚(仅作为商业功能),但不鼓励使用它: https://flywaydb.org/documentation/command/undo 尽管撤消迁移的想法很好,但不幸的是,有时它在实践中会崩溃。一旦您进行了破坏性的更改(删除

  • 问题内容: 设想 我需要每天通过电子表格(唯一可用的选项)更新SQL 2008数据库。该格式非常基本,但是可能有数百万条记录。Column1和Column3将具有许多预定义的重复值,这些值已经提取到单独的表中。 电子表格样本 数据库设置 我的数据库设置了三个单独的表: 问题 如何编写SQL来插入与查找表中的信息匹配的记录?我该怎么办: 对此: 问题答案: 您可以尝试这样的事情: 没有任何容错功能,

  • 我的项目即将启动。在发布之后,我有一个很大的计划,数据库结构将发生变化——现有表和新表中的新列,以及与现有模型和新模型的新关联。 我还没有接触到序列化中的迁移,因为我只有测试数据,我不介意每次数据库更改时都删除这些数据。 为此,目前,如果我更改了模型定义,我会在我的应用程序启动时运行。这将删除所有表并从头开始创建它们。我可以省略选项,让它只创建新表。但如果现有的改变了,这是没有用的。 那么,一旦我

  • 我买了新的MacBook Pro,我在其中安装了mysql,然后安装sequel Pro来查看表和数据库,但是当我命令时,这个错误指控错误图像 近30个小时来,我一直在忍受这个问题,有人能帮我看一下吗

  • 当我运行Gradle任务时,它会失败,并出现以下错误: 警告:不支持的Kotlin插件版本。和插件依赖于Kotlin的功能,这些功能的工作方式可能与请求版本不同。 除了kotlin-dsl Gradle插件的发布说明中写的内容之外,还有迁移指南吗? null