Jump to content

[RESOLU] Modèle & Base de données : Accès


Recommended Posts

Bonjour à tous,

Je début actuellement sur le développement de module pour Prestashop, et après plusieurs heures de recherches, je n'ai pas trouvé de documentation complète sur "l'API de Prestashop".

J'ai cependant trouvé quelques informations sur Db, Configuration et Tools.

Dans mon module, j'aimerai pouvoir, à l'installation, créer une nouvelle catégorie directement dans le code.
Je pourrais faire un INSERT INTO dans la base, tout simplement, mais j'imagine qu'il y a des relations et des dépendances entre les tables, ce qui risque d'inclure des incohérences dans les données.

Ma question est donc la suivante : Existe-t-il une/des classe(s) de service comme (Categorie::ajouter() par exemple) qui permettrait d'ajouter, modifier, supprimer des données dans la base, tout en gardant une cohérence dans les données ?

D'avance merci pour vos réponses!

Bonne journée.

Roopix

Link to comment
Share on other sites

il y a

Category::add($autodate = true, $nullValues = false);



Mais c'est pas une méthode statique et puis il semble qu'il y ait quelques incohérences, enfin quand disons plutôt que je sais pas comment ca marche. En théorie,on devrait instancier un objet Category, remplir les propriétés et faire add();
Seulement, je vois pas trop comment gérer la langue pour le nom et la description.

Si y'a d'autres avis !
Regarder comment c'est fait dans la partie admin, ou le faire à la main en sql.
Cela touche category, category_lang... ne pas oublier de mettre une image au passage.

@++

Link to comment
Share on other sites

Merci pour ta réponse Cédric, ça m'a donné quelques pistes et j'ai donc essayer avec la méthode add().

J'ai donc quelque chose comme :

$cat = new Category();
$cat->id_parent = 1;
$cat->name = array("1" => "NomEn", "2" => "NomFr");
$cat->description = array("1" => "DescrEn", "2" => "DescrFr");
$cat->link_rewrite = array("1" => "nomUrlRewrite", "2" => "nomUrlRewrite");
if($cat->add()) $id = Db::getInstance()->Insert_ID();



MAIS, nouveau problème !
Sur la dernière ligne, j'aimerai récupérer l'identifiant auto incrémenté par la méthode add() et c'est normalement la méthode Insert_ID qui devrait me retourner la bonne valeur.
Or, j'ai fais des test en affichant le dernier identifiant et pour une seule insertion de catégorie, j'ai 6 identifiants !!!!! Dont plusieurs, et notamment le dernier (celui que je récupère) qui sont égaux à 0 !


Comment faire pour récupérer uniquement mon dernier identifiant dans la table catégorie, et à quoi correspondent les autres ?


Merci d'avance ;)

Link to comment
Share on other sites

Et bien je vais me répondre moi même, j'ai trouvé la réponse à mon problème :
Lorsque l'on fait un ajout via la méthode add() l'identifiant du nouvel élément en base prend la valeur de son attribut directement dans l'objet concerné. Simple et efficace.

Merci à Cédric pour ses informations ! :coolsmile:

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...