有没有办法能够判断给定数据库表中的某个列是“布尔”类型,如果是,则将“0”或“1”转换为“否”和“是”?
我有一个名为“gearitems”的表,其中包含有关远足装备项目的基本一般信息(如价格、重量、描述等),然后我还有近 60 个其他“一对一”关系表(例如:“背包”、“睡袋”、 “帐篷”)根据装备的类型都有特定的“特殊功能”。例如,如果是背包,则容量以升为单位,但如果是帐篷,则需要的木桩数量等。
我遇到的问题是,许多这些小的“特殊功能”表都有不同名称的布尔类型列(例如“背包”中的“防水”或“睡袋”中的“可附加”),当我想向用户显示对于特定的齿轮件,我有一个函数可以将一般的“gearitems”表连接到相应的特定齿轮类型表。
对于所有列类型,显示数据插入数据库时都没有问题,但布尔值返回“1”或“0”...我不能将所有“1”和“0”转换为“是” " 或 "no",因为其他值可能是 1 或 0,它们不是布尔值。所以我想,如果我可以检查列类型是否是布尔类型数据,我就可以安全地将值转换为是或否,但是如果不专门针对列的名称,我该如何做到这一点呢?(因为所有布尔类型列的列表会太长并且将来难以编辑)
我创建了一个名为“specialfeatures”的表,其中包含每个装备类型(“背包”、sllepingbags”等)的每个表中的所有特殊功能名称(如“防水”、“stakes_required”、“capacity_l”等)的列表)。我考虑过在special_features_name列旁边添加一个名为“boolean”的列来指示该功能是否为布尔值,但这似乎是一种非常粗糙且不优雅的方法。当然有更好的方法吗?
如果有帮助,这是我的代码中的相关部分:
我的控制器:
public function show(Manufacturer $manufacturer, GearItem $gearItem, GearCategory $gearCategory)
{
// Get the item's special features Model's name:
$featureModel = SpecialFeature::where('sub_categories_id', $gearItem->sub_categories_id)->value('model_name');
$specialFeatures = 'App\\'.$featureModel;
// Get the manufacturer's name and homepage:
$manufacturer->name = $manufacturer::where('id', $gearItem->manufacturer_id)->value('name');
$manufacturer->homepage = $manufacturer::where('id', $gearItem->manufacturer_id)->value('homepage');
// Get all the item's special features:
$gearItem->features = $specialFeatures::where('gear_items_id', $gearItem->id)->get();
// Iterator for the spacial features names:
$featureNames = SpecialFeature::where('sub_categories_id', $gearItem->sub_categories_id)->pluck('feature_name');
$featureNames->title = SpecialFeature::where('sub_categories_id', $gearItem->sub_categories_id)->pluck('feat_html');
return view('gearitem.show', compact(['gearCategory', 'manufacturer', 'gearItem', 'featureNames']));
}
冉冉说