J'ai un contrôleur de produit et quand j'économise un nouveau produit je veux sauvegarder des enregistrements sur un autre contrôleur associé pour enregistrer les catégories auxquelles le produit est associé.cakephp - using create() ne fonctionnant pas comme prévu
Mon code J'utilise est:
$this->Product->create();
if ($this->Product->save($this->request->data)) {
$newProductId = $this->Product->getInsertID();
//associate products with categories
foreach($categoriesToSave as $key=>$value) {
$saveArray['CategoriesProduct'] = array('category_id'=>$value, 'product_id'=>$newProductId);
$this->Product->CategoriesProduct->create();
$this->Product->CategoriesProduct->save($saveArray);
$this->Product->CategoriesProduct->clear();
}
}
Pour une raison que, même si $categoriesToSave
a 10 articles en elle, que le tout dernier est sauvé. Il est donc évident de créer seulement un nouvel élément CategoriesProduct et de sauvegarder chaque enregistrement par-dessus le dernier au lieu de create()
en en créant un nouveau. Est-ce que quelqu'un peut expliquer ce que je fais mal et comment je peux faire ce travail?
Avez-vous une contrainte 'unique' sur le modèle' CategoriesProduct'? Ou une définition spécifique? Et quelle est la relation entre 'Product' et' CategoriesProduct'? – Holt
Êtes-vous dans un environnement de débogage? Sinon, je vérifie toujours les journaux quand il se passe quelque chose qui n'est pas clair. Ils sont situés ici: app \ tmp \ logs – enigmasck
omg ... Je suis un idiot dopey. J'avais omis la clé primaire pour la table categories_products - merci de le signaler :) –