Laravel4のSchemeBuilderを使って複合プライマリーキーを設定したかったけどダメだった。 パーティションを切りたかったので、パーティションのキーになる日時も合わせて複合主キーにしたかったけど、incrementsメソッドにはもれなくprimaryがついちゃうらしく
<?php // こうとか Schema::create("log", function($table) { $table->increments('id'); $table->timestamps(); $table->primary(['id', 'created_at']); }); // こうとか Schema::create("log", function($table) { $table->increments('id'); $table->timestamps(); $table->primary('created_at'); });
こんなかんじにやってもエラーがでます。idからdropPrimaryをしてみてもエラーになる。 どないせいっちゅうねん
結論:使わない
本末転倒な気もするけど、とりあえずmigrationの最初に設定できればいいので、以下みたいにすれば問題ない(ある)
<?php Schema::create("log", function($table) { $table->increments('id'); $table->timestamps(); }); DB::statement(" ALTER TABLE `log` DROP PRIMARY KEY, ADD PRIMARY KEY (`id`, `created_at`); ");
わーい\\٩( 'ω' )و ///できたぞー(当たり前) incrementsとprimaryは別々にしてほしい(小並感)