saveMany et tableau

Par romses, il y a 10 ans


salut je ne sais pas si c'est moi qui met mal mes informations j'ai envi de faire un saveMany avec mes données sous cette forme mais ça ne fonctionne pas cela me génère des erreurs de foreign key plutot je ne comprends rien du tout voici la structure des données a sauvegardées:

array( (int) 0 => array( 'note_obtenu' => '4', 'matieres_id' => '7', 'sequences_id' => '1', 'filieres_id' => '18', 'personnels_id' => '74', 'students_id' => (int) 52, 'enseignements_id' => '1', 'cycles_id' => '31' ), (int) 1 => array( 'note_obtenu' => '12', 'matieres_id' => '7', 'sequences_id' => '1', 'filieres_id' => '18', 'personnels_id' => '74', 'students_id' => (int) 55, 'enseignements_id' => '1', 'cycles_id' => '31' ), (int) 2 => array( 'note_obtenu' => '4', 'matieres_id' => '7', 'sequences_id' => '1', 'filieres_id' => '18', 'personnels_id' => '74', 'students_id' => (int) 51, 'enseignements_id' => '1', 'cycles_id' => '31' ), (int) 3 => array( 'note_obtenu' => '15', 'matieres_id' => '7', 'sequences_id' => '1', 'filieres_id' => '18', 'personnels_id' => '74', 'students_id' => (int) 53, 'enseignements_id' => '1', 'cycles_id' => '31' ), (int) 4 => array( 'note_obtenu' => '18', 'matieres_id' => '7', 'sequences_id' => '1', 'filieres_id' => '18', 'personnels_id' => '74', 'students_id' => (int) 56, 'enseignements_id' => '1', 'cycles_id' => '31' ), (int) 5 => array( 'note_obtenu' => '19', 'matieres_id' => '7', 'sequences_id' => '1', 'filieres_id' => '18', 'personnels_id' => '74', 'students_id' => (int) 54, 'enseignements_id' => '1', 'cycles_id' => '31' ) )

voici le code pour faire le save:

$this->Note->save($donne, array('fieldList'=>array('note_obtenu','sequences_id','filieres_id','matieres_id','personnels_id','cycles_id','enseignements_id','students_id')));

j'ai oublié quelques chause?

11 réponses

Lartak, il y a 10 ans

Bonjour.
Mets plutôt saveMany que save, non ?

romses, il y a 10 ans
$this->Note->saveMany($donne, array('fieldList'=>array('note_obtenu','sequences_id','filieres_id','matieres_id','personnels_id','cycles_id','enseignements_id','students_id')))

cétais une erreur de saisit

Lartak, il y a 10 ans

Si c'est pour faire des modifications sur des enregistrements, la clé primaire est nécessaire (avec son index bien sur).

romses, il y a 10 ans

voici l'erreur génégé :

Error: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`gestionetablissement`.`notes`, CONSTRAINT `fk_notes_sequences1` FOREIGN KEY (`sequences_id`) REFERENCES `sequences` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

mois je ne sais pas si la valeur de la sequence disparait ou est vide après les enregistrements

romses, il y a 10 ans

c'est pas pour faire des modifications je veus juste les créer ses enregistrements dans ma table de la BD, je ne comprends pas le pourquoi cela me génère une erreur de violation de clé et pourquoi cela n'enregistre pas

romses, il y a 10 ans

Merci Lartak, je viens de faire un constat en supprimant la relation (plus précisement le champ séquences_id), cela fonctionne bien j'arrive sauvegardé mes post, mais lorsque je remet la relation cela ne fonctionne plus toujours l'erreur de violation par contre dans mon model Sequence j'ai ceci:

public $hasMany = array( 'Note' => array( 'className' => 'Note', 'foreignKey' => 'sequences_id', 'order' => 'Note.note_obtenu ASC', 'fields' => 'note_obtenu', 'dependent' => true ) );

et dans le model Note j'ai ceci:

public $belongsTo = array( 'Sequence' => array( 'className' => 'Sequence', 'foreignKey' => 'sequences_id', 'fields' => 'numero_sequence' )),

la je suis completement perdu

Lartak, il y a 10 ans

C'est pourtant simple à comprendre, tu as fait une manipulation, par la suite ça fonctionnait correctement et lorsque tu annules cette manipulation, tu as à nouveau l'erreur.

romses, il y a 10 ans

oui sauf que je parcours depuis mes models pour trouver l'erreurs je ne trouve pas tt est clean a vu d'oeil

Lartak, il y a 10 ans

Au contraire, tout n'est pas clean, puisque lorsque tu supprimes la ligne l'erreur ne se manifeste plus et ta requête fonctionne bien.
Mais l'erreur revient lorsque tu remets la ligne.
Je ne vois vraiment pas ce que tu ne comprends pas, vu que l'erreur ne survient que lorsque cette ligne est présente dans ton association.

romses, il y a 10 ans

je suis entrin de me cassé la tête la dessus pour trouver cette insecte d'erreur triviale merci encors Lartak