2012-10-15 14 views
-1

moi avons une relation HABTM et je voudrais obtenir des données imbriquées pour une table de catégories à partir d'une table de produit quelque chose comme ce tableau produit:CakePHP données imbriquées HABTM

array(
    (int) 0 => array(
     'id' => (int) 1, 
     'name' => 'a', 
     'categories' => array(
      (int) 0 => array(
       'id' => (int) 1 
      ), 
      (int) 1 => array(
       'id' => (int) 2 
      ) 
     ) 
    ), 
    (int) 1 => array(
     'id' => (int) 2, 
     'name' => 'b', 
     'categories' => array(
      (int) 0 => array(
       'id' => (int) 1 
      ) 
     ) 
    ) 
) 

Est-ce possible avec un gâteau?

EDIT: Je vais essayer d'expliquer davantage ce que je veux faire.

S'il vous plaît, gardez-moi, je suis nouveau dans le gâteau et j'ai du mal à le maîtriser.

J'ai une table 'produit':

public $hasAndBelongsToMany = array(
     'Category' => array(
      'className' => 'Category', 
      'joinTable' => 'categories_sculptures', 
      'foreignKey' => 'sculpture_id', 
      'associationForeignKey' => 'category_id', 
      'unique' => 'keepExisting' 
     ) 
    ) 

et une table de catégorie:

public $hasAndBelongsToMany = array(
     'Sculpture' => array(
      'className' => 'Sculpture', 
      'joinTable' => 'categories_sculptures', 
      'foreignKey' => 'category_id', 
      'associationForeignKey' => 'sculpture_id', 
      'unique' => 'keepExisting' 
     ) 
    ); 

et une table de produits de la catégorie:

public $belongsTo = array(
    'Category' => array(
     'className' => 'Category', 
     'foreignKey' => 'category_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
    'Sculpture' => array(
     'className' => 'Sculpture', 
     'foreignKey' => 'sculpture_id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ) 
); 

Je voudrais construire un Voir la table des sculptures et aussi montrer dans chaque rangée quelles catégories chaque sculpture est dans (qui pourrait être plus d'un). Comme je suis nouveau au gâteau, je ne sais pas comment j'y arriverais. Si je demandais simplement mysql, je pourrais obtenir cette information avec un group_concat ou un select imbriqué, ou inefficacement en faisant une boucle sur le premier tableau et en interrogeant la table category_sculpture par une clé de sculpture et en ajoutant les résultats au premier tableau. Mais je voudrais savoir la meilleure façon d'obtenir ce résultat le chemin du gâteau.

Répondre

0

J'ai trouvé la réponse à mes besoins:

$this->Sculpture->recursive = 1;