Отличительные значения с отрывом

Я пытаюсь извлечь данные из базы данных и связать их с HTML-тегом выбора, и для их привязки мне нужно использовать pluck, чтобы я получил поле, которое я хочу показать в массиве (ключ => значение), из-за FORM::Выбрать. Нормальный срыв получает все результаты, а я хочу использовать разные. Моя модель Room и выглядит так:

    class Room extends Eloquent
{
    public $timestamps = false;

    protected $casts = [
        'price' => 'float',
        'floor' => 'int',
        'size' => 'float'
    ];

    protected $fillable = [
        'capacity',
        'description',
        'price',
        'floor',
        'size',
        'type',
        'photo_name'
    ];
}

Хотя моя функция, которую я использую в контроллере, выглядит так:

public function getRooms()
    {
        $roomType = Room::pluck('type','type');
        $roomFloor = Room::pluck('floor','floor');

        return view('roomgrid')->with('type',$roomType)->with('floor',$roomFloor);
    }

И мой взгляд содержит этот кусок кода для получения этажей:

{{FORM::select('floor', $floor, null,['class'=>'basic'])}}

Таким образом я получаю дублированные этажи, которые я не хочу. Есть ли способ, чтобы я мог получить отдельные этажи и сорвать их? Заранее спасибо.

6 ответов

Решение

Почему бы не использовать groupBy()?

$roomType = Room::groupBy('type')->pluck('type','type');
Room::unique('floor')->pluck('floor', 'floor');

Отдельный может помочь:

Room::query()->distinct()->pluck('type');

Что будет переведено в следующий SQL:

SELECT DISTINCT type FROM rooms

ты можешь это сделать

          $roomType = Room::pluck('type')->unique();
    $roomFloor = Room::pluck('floor')->unique();

2019 Обновление

Вам не нужно использовать 2 аргумента с pluck()

просто сделайте:

$roomType = Room::groupBy('type')->pluck('type');

конечно для получения его в массив:

$roomType = Room::groupBy('type')->pluck('type')->toArray();

Иногда я использую результат для whereIn пункт, это полезно для этого.

Вы можете использовать или KeyBypluck с той же парой ключ-значение, чтобы выбрать отличные значения. Массив PHP может иметь только уникальные ключи. Из этой идеи мы можем получить уникальные модели на основе ключа массива.

      Room::keyBy('floor')->pluck('floor');

или же

      Room::pluck('floor', 'floor');
Другие вопросы по тегам