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.
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.
distinct peut faire l'affaire:
Room::query()->distinct()->pluck('type');
Qui sera traduit dans le SQL suivant:
SELECT DISTINCT type FROM rooms