我正在使用 CakePHP v3.x,我正在尝试弄清楚如何通过迁移工具插入一些记录。 文档仅列出了修改架构的方法。我需要使用原始 SQL 手动插入记录吗?
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,需要一个小的解决方法才能完成此操作。
在 cake php 5 中,您可以在 up 和 down 方法中执行原始查询,如下所示:
public function up(): void {
$this->execute("INSERT INTO `table_name` (col_names) VALUES ('your val')");
}
在 cake 3x 中尝试一下,看看它是否有效,或者检查文档以查看该功能何时添加。