Laravel Добавить столбец Boolean Nullable - PullRequest
0 голосов
/ 02 февраля 2019

В настоящее время я создаю приложение Laravel 5.7, в котором у меня есть несколько логических столбцов, которые указывают, доступны ли некоторые объекты для здания (модели), например, туалет да / нет.Это прекрасно работает, но мне было интересно, что произойдет, когда я добавлю больше этих логических столбцов позже, когда я разверну приложение.

Скажем, я добавляю логический столбец 'lights', я мог бы присвоить ему значение по умолчанию 0, но не NULL.Так что теперь все мои существующие здания скажут, что нет «огней» (потому что значение равно 0), где на самом деле это должно быть что-то вроде «не знаю» или «не определено», как третье состояние.

Должен ли я использовать столбцы ENUM с да / нет / undefined вместо?Каковы лучшие практики для этого сценария?

Ответы [ 3 ]

0 голосов
/ 03 февраля 2019

Что я хотел бы сделать, это создать отдельную таблицу с object_id и unit_id.Теперь вы можете иметь таблицу динамических объектов и связывать их с объектом.Соединение будет иметь только то, что ему нужно, поэтому не каждый объект «светится» или что-то еще.

0 голосов
/ 03 февраля 2019

Да, Вы правы, это может быть проблемой иногда

Но Boolean CAN BE USED SUCH AS TRUE (OR) FALSE ie) 0 (OR) 1

where in reality it should be something like 'don't know' or 'undefined' Like a third state.

Так что в этой ситуацииuse Может использовать Enum

Например. Ваша таблица будет иметь ups_availablity

Сценарий первый:

Если вы хотите добавить NotAvailableпо умолчанию просто передайте значение внутри метода по умолчанию

$table->enum('ups_availablity', ['Available', 'NotAvailable'])->default('NotAvailable');

Сценарий второй:

Если вы хотите добавить Null add nullable method

$table->enum('ups_availablity', ['Available', 'NotAvailable'])->nullable();

Если у вас есть какие-либо разъяснения Пожалуйста, прокомментируйте ниже

Надеюсь, что это поможет

0 голосов
/ 02 февраля 2019

Вы, конечно, можете создать их как nullable()!Это обычная практика, ИМО.

Что касается передового опыта, то это зависит от того, как должно использоваться ваше приложение.Вы хотите, чтобы пользователь заметил, что состояние не было выбрано так или иначе?Возможно, вы выводите подсказку для настройки тех, которые являются нулевыми.С другой стороны, может быть безопаснее предположить, что для параметров по умолчанию задано значение false, чтобы они правильно отображались.Если это так, возможно, пользователи могут отправлять уведомления об обновлении этого свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...