При выполнении миграций laravel у меня возникает небольшое неудобство. Я использую Laravel 5.1.
Поскольку существует много таблиц со многими взаимосвязями, возможно, что я переименую файлы миграции, чтобы они выполнялись в правильном порядке, поэтому ограничение внешних ключей не нарушено. Это было то, что я когда-то делал в прошлом, и это было очень практично.
То, что я делаю сейчас, определяет каждую миграцию следующим образом:
class CreateSomeTable extends Migration
{
public function up()
{
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
// my table definitions go here
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
public function down()
{
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
// drop table
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
}
Проблема заключается в том, что утомительно писать, и он загромождает код.
Я также подумал о создании двух фиктивных файлов миграции, единственной целью которых было бы включить и отключить проверки внешнего ключа, и я бы назвал их таким образом, чтобы они запускались в начале и в конце каждого миграция.
Если есть изящное решение, можно ли применить его также к процессу посева, так как это тоже проблема.
Это, очевидно, очень импровизированное решение, и я спрашиваю, есть ли лучший способ сделать это. Существуют ли методы beforeMigrate
и afterMigrate
, которые я могу переопределить или что-то в этом роде?
И если нет, как вы это делаете?
Любые идеи будут оценены, мне не нравятся все варианты, о которых я говорил.