2016-10-14 15 views
0

私はCakephp3.3の新機能で、Cakephp3.3でアプリケーションを構築しています。私はuser_infosテーブルを作成しなければならず、新しいカラムを追加したいのです。user_id、マイグレーションによって新しいカラムを追加できます。外部キーを追加する方法を知らない。ここ Cakephp 3.3で外部キー制約を設定するには?

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(); 
    } 

答えて

3

あなたの移行がPhinxに基づいているように見える私のマイグレーションファイルです。関連する方法はPhinx\Db\Tableにあります。 テーブルの制約の移行に、

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

を追加してください。

+0

ハイテクのおかげをカスケード接続して外部キーを追加するには、以下のコードを使用することができますが、どのように我々は同じのために削除カスケードに設定することができますか? –

1

Phinxでは、

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