このような外部キーで(移行を使用して)テーブルを作成しようとしています
public function safeUp()
{
$this->createTable('tbl_category', array(
'id'=>'pk',
'title'=>'string NOT NULL',
'url'=>'string NOT NULL UNIQUE'
));
$this->addForeignKey('FK_category', 'tbl_product', 'category_id', 'tbl_category', 'id', 'CASCADE', 'NO ACTION');
}
MySQLでは完全に機能しますが、SQLiteを使用したいのですが、このコードはSQLiteでは既存のテーブルに外部キーを追加できないというエラーを出すので、createTable
メソッドの定義を調べました:
public integer createTable(string $table, array $columns, string $options=NULL)
$options
paramを使用してそこに外部キーを追加しようとしましたが、次のように生成されます。
CREATE TABLE 'tbl_category' (
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
"title" varchar(255) NOT NULL,
"url" varchar(255) NOT NULL UNIQUE
)
CONSTRAINT FK_category
FOREIGN KEY tbl_product(category_id)
REFERENCES tbl_category(id)
ON DELETE CASCADE ON UPDATE NO ACTION
明らかに、その「CONSTRAINT...」コードはこれらの括弧内にある必要がありますが、そうではありません。では、この外部キーを作成するにはどうすればよいでしょうか。