我目前正在建设一个Laravel 5.7应用,在那里我有指出,如果一些设施,可为建筑(模型)多个布尔列,如厕所是/否。效果很好,但是我想知道以后在部署应用程序时添加更多这些布尔列会发生什么情况。
说我添加一个布尔列“灯”,我可以给它一个默认值0,但不能为NULL。因此,现在我所有现有的建筑物都会说没有“灯光”(因为该值为0),实际上它应该像“不知道”或“未定义”(如第三种状态)之类。
我应该是与使用ENUM列/否/不确定的呢?这种情况下的最佳做法是什么?
答案 0 :(得分:1)
您也可以创建他们他们为nullable()
!这是海事组织的惯常做法。
就最佳实践而言,这取决于应如何使用您的应用程序。您是否希望用户注意到尚未以一种或另一种方式选择状态?也许您正在显示提示以配置为空的提示。在另一方面,它可能是更安全的假设,该选项应该默认为false,以便正确地显示。如果是这样的话,也许是通知可以走出去到你的用户更新该属性。
答案 1 :(得分:1)
我要做的是创建一个单独的表,其中包含object_id和facility_id。现在,你可以有动态facilites表,并将它们与对象连接。连接将仅具有所需的内容,因此每个对象都不“发光”或其他。
答案 2 :(得分:0)
是的,没错,有时候这可能是个问题
但是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.
因此,在这种情况下使用可以使用Enum
例如你的表将具有ups_availablity
方案一:
如果要添加NotAvailable
默认只是传递值内默认方法
$table->enum('ups_availablity', ['Available', 'NotAvailable'])->default('NotAvailable');
方案二:
如果要添加Null
添加nullable
方法
$table->enum('ups_availablity', ['Available', 'NotAvailable'])->nullable();
如果您有任何疑问,请在下面进行评论
希望有帮助
答案 3 :(得分:0)
这对我有用
$table->boolean('lights')->nullable();