web-dev-qa-db-fra.com

comment utiliser GROUP_CONCAT dans laravel

$assignment = assignment::find(Crypt::decrypt($id));
$assignment_details = $assignment->raw_plan()->groupBy('flag')->get();

Je veux suivre le résultat de cette requête dans laravel

SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where `assignment_id` = 1 GROUP BY`flag`

Veuillez me suggérer comment utiliser GROUP_CONCAT dans laravel

14
Dipankar Naskar

Vous pouvez utiliser des relations en tant que générateur de requêtes pour récupérer les résultats comme suit:

$assignment_details = $assignment->raw_plan()
                                ->select(DB::raw('group_concat(name) as names'))
                                ->where('assignment_id', 1)
                                ->groupBy('flag')
                                ->get();

Mise à jour

Utilisation table_name.* in select pour obtenir tous les champs.

$assignment_details = $assignment->raw_plan()
                                ->select('raw_plans.*', DB::raw('group_concat(name) as names'))
                                ->where('assignment_id', 1)
                                ->groupBy('flag')
                                ->get();
19
Amit Gupta

shoieb a quelque peu raison, mais vous devez donner le nom de la table avant d'accéder aux noms des colonnes dans DB:raw()

Vous devriez essayer ceci:

$data = DB::table('raw_plans')
            ->select(DB::raw("group_concat(raw_plans.name)"))
            ->groupBy('flag')
            ->where('assignement_id',1)
            ->get();

J'espère que cela t'aides.

7
Saumya Rastogi

Essayez avec le code ci-dessous

$data = DB::table('raw_plans')
            ->select(DB::raw("GROUP_CONCAT(name SEPARATOR '-') as `names`"))
            ->groupBy('flag')
           ->where('assignement_id',1)
            ->get();
5
shoieb0101

Essaye ça

$sql = "SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where  `assignment_id` = 1 GROUP BY`flag`";

  $info = DB::select(DB::raw($sql));
1
Nazmul Hasan