web-dev-qa-db-fra.com

Valeurs distinctes avec pincement

J'essaie de récupérer des données de la base de données et de les lier à une balise de sélection html, et pour les lier, j'ai besoin d'utiliser pluck, donc j'obtiens le champ que je veux afficher dans un tableau (clé => valeur), à cause de FORM: :sélectionner. La plume normale obtient tous les résultats, alors que je veux utiliser distinct. Mon modèle est Room et il ressemble à:

    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'
    ];
}

Alors que ma fonction que j'utilise dans le contrôleur ressemble à:

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

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

Et ma vue contient ce morceau de code pour obtenir des étages:

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

Comme ça, je reçois des planchers en double, que je ne veux pas. Existe-t-il un moyen pour que je puisse obtenir des sols distincts et les cueillir? Merci d'avance.

14
Arlind Hajdari

Mise à jour 2019

Vous n'avez pas besoin d'utiliser 2 arguments avec pluck()

faites simplement:

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

bien sûr pour le mettre dans le tableau:

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

Parfois, j'utilise le résultat de la clause whereIn, c'est utile pour cela.

1
Learner

distinct peut faire l'affaire:

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

Qui sera traduit dans le SQL suivant:

SELECT DISTINCT type FROM rooms
1
vbarbarosh