Есть ли способ определить, что определенный столбец в данной таблице базы данных имеет логический тип, и если это так, преобразовать 0 или 1 в нет и да?
У меня есть таблица с названием gearitems, в которой есть основная общая информация о предметах походного снаряжения (например, цена, вес, описание и т. д.), а также около 60 других таблиц взаимосвязей (например, рюкзаки, спальные мешки, палатки), каждая из которых имеет определенные особенности. в зависимости от типа снаряжения. Например, если это рюкзак, его вместимость указана в литрах, а если это палатка, то количество требуемых колышков и т. д. и т. д.
Проблема, с которой я сталкиваюсь, заключается в том, что многие из этих небольших таблиц специальных функций имеют столбцы логического типа с разными именами (например, «водонепроницаемый» в рюкзаках или «прикрепляемый» в спальных мешках), и когда я хочу показать пользователю конкретную часть снаряжения, у меня есть функция, которая соединит общую таблицу gearitems с соответствующей таблицей конкретных типов передач.
Для всех типов столбцов нет проблем с отображением данных по мере их вставки в базу данных, но логическое значение возвращает 1 или 0... Я не могу просто преобразовать все 1 и 0 в да или нет, так как другие значения могут быть 1 или 0, которые НЕ ЯВЛЯЮТСЯ логическими. Итак, я решил, что если бы я мог проверить, является ли тип столбца данными логического типа, я мог бы затем безопасно преобразовать значения в да или нет, но как я могу сделать это, без специального нацеливания на имя столбца? (поскольку список всех столбцов логического типа будет слишком длинным и сложным для редактирования в будущем)
Я создал таблицу под названием specialfeatures, которая содержит список всех названий специальных функций (таких как водонепроницаемость, ставки_требуемая вместимость_l и т. д.) в каждой таблице каждого типа снаряжения (рюкзаки, чемоданы и т. д.). Я подумал о добавлении столбца с именем boolean рядом со столбцом special_features_name, чтобы указать, является ли эта функция логической или нет, но это кажется очень грубым и неэлегантным способом сделать это. Наверняка есть лучший способ?
Если это поможет, вот соответствующие части моего кода:
Мой контроллер:
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']));
}
Мой взгляд:
@if($gearItem->url === null)
<strong>{{$gearItem->name}}</strong>
@else
<strong> <a target="_blank" href="{{$gearItem->url}}">{{$gearItem->name}}</a></strong>
@endif
by <strong><a target="_blank" href="{{$manufacturer->homepage}}">{{ $manufacturer->name }}</a></strong>
<div class="specialFeatures">
<div class="row">
<div class="col-6">
<table class="table">
@foreach ($featureNames->title as $title)
<tr>
<td>{!! $title !!}</td>
</tr>
@endforeach
</table>
</div>
<div class="col-6">
<table class="table">
@foreach ($featureNames as $featureName)
<tr>
<td>{{ $gearItem->features[0][$featureName]}}</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
$specialFeatures = 'App\\'.$featureModel
каждый раз меняет целевую модель в соответствии с типом предмета снаряжения. Каждая модель имеет свой набор столбцов, некоторые из которых имеют логический тип. Мне нужна функция, которая может ориентироваться на ЛЮБОЙ столбец логического типа, а затем преобразовывать его значения в ДА/НЕТ в зависимости от регистра и отправлять его в представление как таковое. Вместо 1/0. - person nurge   schedule 25.06.2020{{ $data->sample }}
, чтобы я мог рассказать вам, как вы можете настроить это - person sta   schedule 25.06.2020