Laravel添加列布尔可空

问题描述 投票:1回答:3

我目前正在建设一个Laravel 5.7应用,在那里我有指出,如果一些设施,可为建筑(模型)多个布尔列,如厕所是/否。这工作得很好,但我不知道当我添加更多的这些布尔列后,当我部署的应用程序会发生什么。

说我添加了一个布尔列“灯,”我可以给它的默认值0,而不是空。所以,现在我所有的现有建筑物会说,有没有“灯”(因为值为0),实际上它应该是这样的“不知道”或“不确定”像第三状态。

我应该使用的是/否ENUM列/未定义的呢?什么是此方案的最佳实践?

laravel laravel-5.7
3个回答
1
投票

你当然可以创建他们他们作为nullable()!它是一种常见的做法,IMO。

至于最佳实践去,这取决于你的应用程序应该如何使用。你希望用户注意到,国家还没有选择一个或其他方式吗?也许你正在显示一个提示,配置为空的人。在另一方面,它可能是更安全的假设,该选项应该默认为false,以便正确地显示。如果是这样的话,也许是通知可以走出去到你的用户更新该属性。


1
投票

我会做什么,是创建单独的表,用OBJECT_ID和facility_id。现在,你可以有动态facilites表,并将它们与对象连接。连接只会有什么需要,因此不是每个对象的“轻”或别的东西。


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();

如果您有任何澄清,请评论下面

希望它可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.