Bonjour,
Je développe une appli web, reposant sur le framework PHP Symfony qui utilise l'ORM Propel pour générer un modèle objet à partir d'une base PostGRE SQL.
Or il y un bug Propel sur la génération de modèle avec ce type de BDD. Propel attribue des séquence nommées '[nom_table]_seq' là ou PostGRE SQL les nomme '[nom_table]_[nom_colonne_id]_seq'.
Pour remédier à ce problème, j'ai trouvé le morceau de code que voici :
Le problème est que le test isSequence ne passe pas. Je pensais donc le désactiver en pariant sur la chose suivante :
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 // add an id-method-parameter if we have a sequence that matches table_colname_seq // // $pkey = $table->getPrimaryKey(); if ($pkey) { $cols = $pkey->getColumns(); if (count($cols) === 1) { $col = array_shift($cols); if ($col->isAutoIncrement()) { $seq_name = $table->getName().'_'.$col->getName().'_seq'; if ($table->getDatabase()->isSequence($seq_name)) { $idMethodParameterNode = $this->doc->createElement("id-method-parameter"); $idMethodParameterNode->setAttribute("value", $seq_name); $node->appendChild($idMethodParameterNode); } } } }
Une colonne de table, clé primaire à elle toute seule ET auto-incrémentée EST une séquence.
Je m'en remets donc à des utilisateurs avertis pour savoir ce qu'il en est et éventuellement connaître les cas où mon jugement s'avère faux.
Merci d'avance
Partager