Enregistrement multiple

Par Pavlovich4, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Je voudrais enregistrer des donneées dans une table d'associations avec possiblité d'enregistrement multiple

Voila ce quel genre donné je veux enregistrer:

[ 'user_id' => [ (int) 0 => '17', (int) 1 => '18' ], 'recommendation_id' => '2' ]

Et voici ce que j'écris dans mon controller :

$usersRecommendation = $this->UsersRecommendations->newEntity(); if ($this->request->is('post')) { $usersRecommendation = $this->UsersRecommendations->patchEntity($usersRecommendation, $this->request->getData()); $this->UsersRecommendations->save($usersRecommendation]); }

J'obitens cette erreur
Cannot insert row, some of the primary key values are missing. Got (, ), expecting (user_id, recommendation_id)

Je voudrais savoir comment effectuer l'enregistrement dans mon cas.

Merci d'avance. :)

2 réponses

Kareylo, il y a 8 ans

Il faut que tu boucles sur tes enregistrements pour les enregistrer un à un. C'est pas très intuitif, mais c'est comme ça.
Je te redirige vers la doc : Enregistrements Multiples

romses, il y a 8 ans

Normal car dans 'user_id' => [
(int) 0 => '17',
(int) 1 => '18'
],
les champs ne sont pas bien identifiés car le model attends les données du genre

$data =[ [ 'user_id'=>'17', 'recommendation_id'=>'2' ], [ 'user_id'=>'18', 'recommendation_id'=>'2' ], [ 'user_id'=>'19', 'recommendation_id'=>'2' ] ] $result = $this->UsersRecommendations->saveMany($data);