Skip to content

Commit

Permalink
fintech-fab#17 ревью
Browse files Browse the repository at this point in the history
  • Loading branch information
mikhailn committed Sep 3, 2014
1 parent 6f41a1b commit eae5a77
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,29 @@ 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->timestamps();
});

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

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ public function up()
$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('count')->unsigned()->default(1);
Expand Down

0 comments on commit eae5a77

Please sign in to comment.