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

问题描述 投票:0回答:2

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

php sql cakephp cakephp-3.0
2个回答
6
投票

CakePHP 3 的迁移插件是一个 Phinx 包装插件,因此可以使用

up()
方法添加记录:-

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

public function down() {
    // Remove records
}

例如,您可以使用

TableRegistry
上的
up
添加新用户:-

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

    $user->name = 'Joe Bloggs';
    $user->email = '[email protected]';

    $UsersTable->save($user);
}

如果使用

TableRegistry
,请不要忘记在迁移文件的顶部包含
use Cake\ORM\TableRegistry;

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

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

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


0
投票

在 cake php 5 中,您可以在 up 和 down 方法中执行原始查询,如下所示:

 public function up(): void {
     $this->execute("INSERT INTO `table_name` (col_names) VALUES ('your val')");
 }

在 cake 3x 中尝试一下,看看它是否有效,或者检查文档以查看该功能何时添加。

© www.soinside.com 2019 - 2024. All rights reserved.