Cakephp 3.3迁移如何设置外键约束?

How to set Foreign Key Constraint in Cakephp 3.3 Migration?

我是 Cakephp 的新手,正在使用 Cakephp3.3 构建应用程序,我正在处理迁移,我必须创建一个 user_infos table,并想添加一个新列 user_id, 我可以通过迁移添加新列,但我不知道如何添加外键。

这是我的迁移文件

    public function change()
    {
        $table = $this->table('user_infos');
        $table->addColumn('user_id', 'integer', [
            'default' => null,
            'limit' => 11,
            'null' => false,
        ]);
        $table->addColumn('title', 'string', [
            'default' => null,
            'limit' => 255,
            'null' => false,
        ]);
        $table->addColumn('created', 'datetime', [
            'default' => null,
            'null' => false,
        ]);
        $table->addColumn('modified', 'datetime', [
            'default' => null,
            'null' => false,
        ]);
        $table->create();
    }

您的迁移似乎是基于Phinx;你可以在Phinx\Db\Table中找到相关的方法。添加

->addIndex(['user_id'])
->addForeignKey('user_id', 'users', 'id')

您的迁移是为了 users table 上的约束。

在Phinx中,您可以使用下面的代码添加级联外键​​

$table->addForeignKey('user_id', 'users', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']);