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


romses
Réponse acceptée

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);

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