From a030646f64075757e6a3163bea00d829596ff4c4 Mon Sep 17 00:00:00 2001 From: Kirill Marenov Date: Thu, 4 Sep 2014 00:12:40 +0400 Subject: [PATCH] =?UTF-8?q?#17=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B8=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B9=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B2=D1=8C=D1=8E:=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8E,=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20=D0=B2=D0=BD?= =?UTF-8?q?=D0=B5=D1=88=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB=D1=8E=D1=87=D0=B8?= =?UTF-8?q?,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8F=20-=20=D0=BF=D1=80=D0=B8=D0=B7=D0=BD?= =?UTF-8?q?=D0=B0=D0=BA=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._230939_create_dinner_menu_items_table.php | 22 +++++-------------- ..._234512_create_dinner_menu_users_table.php | 15 +++---------- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/app/database/migrations/2014_09_02_230939_create_dinner_menu_items_table.php b/app/database/migrations/2014_09_02_230939_create_dinner_menu_items_table.php index e2d3a02f..94d1ffa5 100644 --- a/app/database/migrations/2014_09_02_230939_create_dinner_menu_items_table.php +++ b/app/database/migrations/2014_09_02_230939_create_dinner_menu_items_table.php @@ -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(); }); - // те же самые коменты - ко второй миграции } /** diff --git a/app/database/migrations/2014_09_02_234512_create_dinner_menu_users_table.php b/app/database/migrations/2014_09_02_234512_create_dinner_menu_users_table.php index b3fd2ed4..cdfb9266 100644 --- a/app/database/migrations/2014_09_02_234512_create_dinner_menu_users_table.php +++ b/app/database/migrations/2014_09_02_234512_create_dinner_menu_users_table.php @@ -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(); }); }