Получите значение вместо ключа с помощью коллекции Laravel

$job_types = DB::table('jobs')->pluck('job_type')->unique();

Верхний код возвращает коллекцию, как показано ниже.

введите описание изображения здесь

Также под кодом Laravel Blade сделайте список выбора с верхней коллекцией.

<!-- Job Type Field -->
<div class="form-group col-sm-4" >
    {!! Form::label('job_type', 'Emne:') !!}        
    {!! Form::select('job_type', $job_types, null, ['class' => 'form-control', 'id' => 'job_type']) !!}
</div>

Это возврат в виде окна выбора. введите описание изображения здесь

Итак, моей целью было разместить выбранное значение в поле выбора. но я получил эти ключи, такие как 0, 2, 17, 6, как значения в БД. У меня по-прежнему только KEY вместо Value.

Как я могу получить значение для вставки данных в БД?


person JsWizard    schedule 01.03.2018    source источник


Ответы (3)


Вы можете просто передать второй параметр методу pluck:

$job_types = DB::table('jobs')->pluck('job_type', 'job_type')->unique();

Однако я думаю, вам следует пересмотреть практику хранения значения, поскольку это может привести к нормализации базы данных нарушения.

person Mihai Matei    schedule 01.03.2018
comment
@ ваш ответ был очень полезным, и как избежать нормализации базы данных в моем случае? :) - person JsWizard; 01.03.2018
comment
одна вещь, которую вы можете сделать в первую очередь, - это избегать дублирования записей. При этом я думаю, что эти типы заданий должны принадлежать отдельной таблице. Таблицы заданий должны иметь внешний ключ, ссылающийся на таблицу job_tyoes через столбец job_type_id - person Mihai Matei; 01.03.2018

См. https://laravel.com/docs/4.2/html#drop-down-lists

Form::select('size', array('L' => 'Large', 'S' => 'Small'));

Ключи массива будут приняты как значение select.

Итак, ваша проблема в том, что ваш массив $job_types не отформатирован в соответствии с вашим запросом.

Если вы хотите получить job_type как значение select, убедитесь, что они являются $job_types ключевыми.

Изменять:

$job_types = DB::table('jobs')->pluck('job_type')->unique();

to

$job_types = DB::table('jobs')->pluck('job_type', 'job_type')->unique();

person vietanhyt    schedule 01.03.2018
comment
Спасибо за подробный ответ и объяснение. Я согласился с ответом Матей, потому что тот же ответ пришел первым. :) - person JsWizard; 01.03.2018

Используйте 1_:

$job_types = DB::table('jobs')->groupBy('job_type')->pluck('job_type');
person Sohel0415    schedule 01.03.2018
comment
это неправильно сработало. Я использую приведенный выше код, спасибо. - person JsWizard; 01.03.2018