Как установить ограничение внешнего ключа при миграции Cakephp 3.3?

Я новичок в Cakephp и создаю приложение с помощью Cakephp3.3, я работаю над миграцией, мне нужно создать таблицу user_infos и добавить новый столбец 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();
    }

person Amrinder Singh    schedule 14.10.2016    source источник


Ответы (2)


Ваша миграция, похоже, основана на Phinx; вы можете найти соответствующие методы в Phinx\Db\Table. Добавлять

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

к вашей миграции для ограничения на таблицу users.

person code-kobold    schedule 14.10.2016
comment
привет, спасибо, но как мы можем установить каскадное удаление для того же? - person Amrinder Singh; 14.10.2016
comment
Будет ли это считаться ассоциацией? - person DevDave; 11.11.2020

В Phinx вы можете использовать приведенный ниже код для добавления внешнего ключа с каскадированием.

$table->addForeignKey('user_id', 'users', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']);
person Akhlaq Ahmad    schedule 17.07.2017