【问题标题】:cakePHP 3.0 pre-populate database - migrationscakePHP 3.0 预填充数据库 - 迁移
【发布时间】:2015-05-06 07:32:11
【问题描述】:

我有一个现有的数据库。使用此命令,我制作了迁移文件:

bin/cake bake migration_snapshot Initial

现在我想预填充数据库,我猜测应该在这个迁移文件中完成,但在网上找不到示例。

在下面链接的概述部分中,我读到应该可以使用迁移将数据插入数据库。

http://book.cakephp.org/3.0/en/migrations.html

示例

添加栏

$user = $this->table('users', ['id' => false, 'primary_key' => ['user_id']]);
    $user
        ->addColumn('user_id', 'integer', [
            'default' => null,
            'limit' => 11,
            'null' => false,
        ])
->create();

填充(这不起作用)

$user = TableRegistry::get('Users')->newEntity();
$user = TableRegistry::get('Users')->newEntity([
      'user_id' => 1,
   ]);

【问题讨论】:

    标签: mysql cakephp migration entity cakephp-3.0


    【解决方案1】:

    通过迁移更新数据库时,您应该使用 update 而不是 create

    $user = $this->table('users', ['id' => false, 'primary_key' => ['user_id']]);
    $user
        ->addColumn('user_id', 'integer', [
            'default' => null,
            'limit' => 11,
            'null' => false,
        ])
       ->update();
    

    并使用

    bin/cake migrations migrate
    

    【讨论】:

    • 不是->update();更改列名时使用?
    • 我们在这里归因于该表的结构已更改,您之前使用的会尝试创建另一个具有相同名称的表,这是不可能的并且会引发错误
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 2021-11-29
    • 2013-10-30
    • 2021-08-22
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多