Bonsoir,

Ce n'est pas vraiment une question mais une remarque.
Dans une méthode d'un module,
je récupère des données à partir de plusieurs tables pour alimenter
une autre et j'ai constaté ceci :
Lorsque je crée mon objet en dehors de la boucle foreach, je ne trouve sur ma table
que le dernier objet enregistré ; alors que si je le crée dans la boucle
j'ai la totalité des objets

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
public function _aliment()
{
    //$oMk_mfp_config = new row_mk_mfp_config ;  // nouveau objet en dehors de la boucle
 
    $tMk_temp=model_mk_temp::getInstance()->findAll(); // contient le nombre d'objets à importer
    $i = 0 ;
    foreach($tMk_temp as $oMk_temp)
    {
      $oMk_mfp = model_mk_mfp::getInstance()->isExiste($oMk_temp->num_serie) ; // pour récupérer l'id du mfp
 
      $oMk_mfp_config = new row_mk_mfp_config ; // nouveau objet à l'intérieur de la boucle foreach
 
      // assigne les données
      $oMk_mfp_config->mfp_id = $oMk_mfp->mfp_id ;
      $oMk_mfp_config->config_smtp = $oMk_temp->config_smtp ;
      $oMk_mfp_config->config_conso = $oMk_temp->config_conso ;
      $oMk_mfp_config->ip = $oMk_temp->ip ;
      $oMk_mfp_config->site = $oMk_temp->site ;
 
      $oMk_mfp_config->save() ; // sauvegarde l'objet
 
      //var_dump($oMk_mfp_config) ; exit() ;
      $i++ ; // juste pour compter les objets
    }
    echo "Nombre i : ".$i ; exit() ; // test
  }
Je pense que l'explication vient du fait que la fonction save(), renvoie en mémoire l'identifiant de l'objet créé
du coup, à chaque passage, on ne fait que des modifications sur le premier objet créé dès le premier passage dans la boucle.

Cordialement