Skip to content

Commit

Permalink
fintech-fab#17 Исправление миграций после ревью: заданы значения по у…
Browse files Browse the repository at this point in the history
…молчанию, убраны внешние ключи, добавлены поля - признаки удаления записи
  • Loading branch information
kmarenov committed Sep 3, 2014
1 parent eae5a77 commit a030646
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,17 @@ class CreateDinnerMenuItemsTable extends Migration
*/
public function up()
{
// всегда нужно делать значения по умолчанию для полей
// если это строка - то пустое
// если число - то какое то осмысленное значение
// если дата-время - тоже заполнять (нулями, если нет)
// NULL можно использовать только для текстовых полей (TEXT)

// причины так делать:
// во первых - чтобы не думать лишний раз - надо/ненадо (не думаем и всегда делаем значения по умолчанию)
// во вторых, в mysql есть небольшая неприятность с индексами на полях, которые могут быть NULL
// в-третьих, это для дисциплины - всегда задумывайтесь над тем, что будет в этом поле
// в-четвертых, так вы избегаете ошибок (можно не передавать значение из php при сохранении)
Schema::create('dinner_menu_items', function (Blueprint $table) {
$table->increments('id');
$table->string('title'); //название блюда
// string не больше 255 размером
// для текстовых есть $table->text()
$table->string('description', 512)->nullable(); //описание блюда
$table->decimal('price', 7, 2)->unsigned(); //цена блюда
$table->date('date'); //дата, когда блюдо доступно для заказа
$table->string('title')->default(''); //название блюда
$table->text('description')->nullable(); //описание блюда
$table->decimal('price', 7, 2)->unsigned()->default(0); //цена блюда
$table->date('date')->default('0000-00-00'); //дата, когда блюдо доступно для заказа
$table->boolean('deleted')->default(false); //вместо удаления нужно сделать это поле true
$table->timestamps();
});

// те же самые коменты - ко второй миграции
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,10 @@ public function up()
{
Schema::create('dinner_menu_users', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('dinner_menu_item_id')->unsigned();
// в данном случае - внешние ключи - не сильно необходимы, потому что
// удалять пользователей и пункты меню обедов - не планируется
// удалять вообще плохо для индексов (проще просто отдельным полем "выключить")
// т.е. не плохо - что они (внешние ключи) есть. но толку никакого.
// если будете с базой работать вручную, или ее в юнит-тестах - будет мучение сплошное.
// например вы не сможете создать специально ошибочную операцию для тестирования вашего кода.
// лучше если целостность контролируется не базой, а вами собственноручно.
// т.е. у вас в коде не происходит неконтролируемых ситуаций, которые нужно защищать внешними ключами.
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('dinner_menu_item_id')->references('id')->on('dinner_menu_items');
$table->integer('user_id')->unsigned()->default(0);
$table->integer('dinner_menu_item_id')->unsigned()->default(0);
$table->integer('count')->unsigned()->default(1);
$table->boolean('deleted')->default(false);
$table->timestamps();
});
}
Expand Down

0 comments on commit a030646

Please sign in to comment.