#laravel #laravel-8
Вопрос:
У меня возникли проблемы с получением целочисленного значения из конструктора запросов Laravel. Это дает мне эту ошибку в качестве заголовка вопроса:
Object of class IlluminateSupportCollection could not be converted to int
я попытался также использовать метод pluck (), но с той же ошибкой.
Вот кодовая часть кода:
Scegli Corso: <select name="tipo" id="selezionaCorsoIscrizione">
{{ $corsi_scii = DB::table('corsoscii')->select('idCorso','nome')->get() }}
{{ $post_corso = DB::table('corsoscii')->select('membriMax')->pluck('membriMax') }}
<option value="" selected="selected"> Seleziona Corso
</option>
@foreach($corsi_scii as $corso_scii)
<option value="">
@if($post_corso == 0)
{{ "Il corso ha raggiunto la capienza massima" }}
@else
{{ $corso_scii->idCorso." - ".$corso_scii->nome }}
@endif
</option>
@endforeach
Комментарии:
1. Не размещайте в своем представлении запросы к БД. Это плохое разделение забот. Представление не должно отвечать за получение данных, только за отображение данных
Ответ №1:
pluck()
возвращает коллекцию выбранных вами полей. Вы не можете сравнить это с 0
. Используйте value()
вместо этого, он возвращает первое доступное значение или значение null.
Замените эту строку
{{ $post_corso = DB::table('corsoscii')->select('membriMax')->pluck('membriMax') }}
с
{{ $post_corso = DB::table('corsoscii')->select('membriMax')->value('membriMax') }}
Комментарии:
1. Ошибка заключалась
pluck()
в том, что я использовалvalue()
вместо этого, как вы предложили, теперь проблема в том, что я хочу удалить в выпадающем меню выбор курсов, на которых осталось 0 мест. условие кажется правильным, но теперь оно печатает все места, где достигнут предел, даже если это не так в этой части кода.@if($post_corso == 0) {{ "Il corso ha raggiunto la capienza massima"}}
2. Хорошо, мы нашли новое решение для нашей проблемы, чем вы так сильно