Объект класса IlluminateSupportКоллекция не удалось преобразовать в int Laravel 8

#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. Хорошо, мы нашли новое решение для нашей проблемы, чем вы так сильно