recherche

Maison  >  Questions et réponses  >  le corps du texte

Combiner plusieurs résultats lors de la jointure de tables : un guide étape par étape

J'ai une requête qui renvoie les noms des catégories et leurs sous-catégories.

$subcategories = Subcategory::select('subcategories.name as subcatname', 'categories.name as catname')
                ->join('categories', 'subcategories.idCategory', '=', 'categories.id')
                ->get();

Maintenant, le résultat que j'obtiens est le suivant :

'Music' => 'Jazz',
'Music' => 'Rock',
'Music' => 'Pop',
'Movie' => 'Action'

Comment puis-je le regrouper comme ceci :

'Music' => array('Jazz', 'Rock','Pop'),
'Movies' => array('Action')

Est-ce possible sans trop d'itérations de boucle et de vérifier quelle sous-catégorie appartient à quelle catégorie ?

P粉769045426P粉769045426223 Il y a quelques jours568

répondre à tous(1)je répondrai

  • P粉513318114

    P粉5133181142024-04-05 00:21:42

    Vous pouvez utiliser Laravel集合

    Vous devez d'abord passer groupBy 方法进行分组,然后映射chaque groupe et fusionner chaque sous-tableau.

    $result = collect($subcategories)
            ->groupBy('catname')
            ->map(function ($item) {
                return array_merge($item->toArray());
            })->all();

    répondre
    0
  • Annulerrépondre