IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

sauvegarder les données d'un autre Controller [CakePHP]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut sauvegarder les données d'un autre Controller
    Bonjour à tous,
    me revoilà avec une petite question :
    Je voudrais enregistrer dans un controller les éléments d'autres controllers, notamment des résultats de requêtes pour les enregistrer en BDD dans une table globale, représenté par le controller où je veux enregistrer.
    Est-ce que quelqu'un pourrait m'aider?

    Merci d'avance et bonne journée!

    la sista

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Si tes modèles sont correctements liées, tu peux utiliser les fonctions saveAssociated, saveMany et saveAll. Tu peux aller regarder la doc à ce sujet, c'est plutôt bien expliqué.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Bonsoir,
    Merci de m'avoir répondue. Je ne vois par contre toujours pas comment écrire la fonction pour récupérer le résultat d'une requête d'un controller dans un autre controller. Je pense bien qu'il faut utiliser saveAssociated mais je ne vois pas comment.
    Est-ce que quelqu'un pourrait me donner un exemple, s'il vous plait?

    Merci et bonne soirée!

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Il y a des erreurs dans le vocabulaire...

    récupérer le résultat d'une requête d'un controller
    résultats de requêtes pour les enregistrer
    Enregistrer ou récupérer ? De plus, on ne fait jamais appel à une méthode d'un autre controller à partir d'un controller : on interroge des modèles éventuellement, mais jamais d'autres contrôleurs.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    Je suis désolée pour les erreurs de vocabulaire, je ne suis pas experte en cakephp je l'avoue
    En fait, ce que je cherche à faire, c'est sauvegarder en base de données des ingrédients de plusieurs types pour créer une recette. j'utilise donc l'association HABTM mais je ne sais pas où je dois placer mon save() pour que les ingrédients s'enregistrent dans une seule recette...

    Merci si quelqu'un sait quoi faire!

    Bonne journée


  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    J'ai vraiment besoin d'aide. J'ai beau lire la doc je ne trouve pas de solution à mon problème : je souhaite enregistrer plusieurs ingrédients (qui viennent de plusieurs tables dans ma BDD) dans la table recette, je veux que tous ces ingrédients s'enregistrent dans UNE seule recette. est-ce que quelqu'un peut m'aider avec un bout de code d'exemple svp?

    Merci!

    Bonne journée

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Pour sauvegarder des données de type HABTM, il faut juste que tes données soient organisées de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            $datas = array(
                'Recipe' => array(
                    'name' => 'truc'
                ),
                'Ingredient' => array(
                    0 => array(
                        'name' => 'machin'
                    ),
                    1 => array(
                        'name' => 'bidule'
                    )
                    //...
                )
            );
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Merci pour cette réponse, mais ceci ne peut pas s'adapter à mon appli car les ingrédients sont "sélectionnés" aléatoirement...
    Je voudrais simplement créer une nouvelle recette à partir de mes ingrédients de différents type (légumes, viandes etc.) et que tous ces ingrédients s'enregistrent dans une recette de la BDD. je patauge, je patauge...j'ai besoin d'aide, s'il vous plait.

    Merci

    Bonne soirée

  9. #9
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Ben le truc c'est que là tu demandes de faire ton boulot à ta place, tu ne donnes que peu d’informations si ce n'est "je veux faire ça", tu ne mets pas ce que tu as essayé et ce qui te bloques.

    Si tu n'est pas plus précis sur l'endroit bloquant (et à moins de te faire un devis...), il va mettre difficile de t'aider...
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    j'entend bien ce que tu me dis. Et effectivement c'est peut-être un peu abusé de ma part !
    J'en suis désolée.

    Je chercherai une solution autrement

    Merci en tous cas

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Bon, j'essai de demander de l'aide à nouveau en étant plus précise là où ça coince

    Voilà, j'ai une table recettes et des tables d'ingrédients.

    J'arrive à enregistrer en dur dans la table recettes quand je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function test(){
    $this->Recette->create();
    $this->Recette->set(array(
       'recettes' => 'légume',
        'legume' => 'nouveau légume')
       );
    $this->Recette->save();
    mais quand je veux enregistrer un résultat aléatoire, je suis bloquée, voici ce qui ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $this->loadModel('Legume');
    $this->Recette->create();
     
    $this->Recette->set(array(
       'recettes' => 'legume',
       'legume' => array( //c'est ici que ça coince je pense
           'random_legumes', $this->Legume->find('all', array(
           'order' => 'rand()',
           'limit'=> 1,
          'conditions' => array('type' => 'vert'))));
    $this->Recette->save();
    Je sens bien qu'il ne me manque pas grand chose mais j'ai essayé plein de choses et rien ne fonctionne!

    Si quelqu'un pouvait m'apporter son aide?

    Merci !

  12. #12
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Oulala oui, en effet c'est un peu clairement n'importe quoi...

    Premièrement -> regarde les conventions de CakePhp : les noms des models sont en CamelCase. Donc c'est Legume et Recette.

    Deuxièmement -> Comment sont liés tes modèles ? Quelles est le structure de tes tables ? As tu bien modélisé ta bdd ? Pour moi techniquement ça devrait être une relation HABTM, mais étant donné que tu débutes, je me demande vraiment si celle-ci est bien faîte.

    Troisièmement -> Mmmh... Déjà ça, on verra après.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Merci pour ta réponse.
    Je ne pense pas que se soit vraiment n'importe quoi car ce qui est écrit en minuscule correspond aux tables et champs de la BDD (la preuve ça marche en dur)

    J'ai effectivement utilisé une relation HABTM. Mes tables sont construites ainsi : id, type, description.

  14. #14
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Peux-tu donner précisément comment sont contruites les tables qui concernent les légumes et les recettes ? Dans le cas d'une HABTM, tu dois avoir une table intermédiaire entre les deux...
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  15. #15
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Alors,
    Toutes les tables des ingrédients (viandes, légumes etc.) sont construites ainsi : id, type, description.

    Ma table recettes a pour champs : légume, viande etc.

    Et j'ai créé une première table intermédiaire entre recettes et légumes. (j'essaie déjà avec les légumes voir comment ça fonctionne)

    Je pense que la relation HABTM fonctionne, vu que j'ai pu enregistrer, en dur, un légume dans une recette.

  16. #16
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Bon, si tu souhaites créer une recette en la liant avec des légumes déjà existant, voici la strucrture de donnée à mettre en place :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    array(
    	'Recette' => array(
    		'description' => 'Nouveau'
    	),
    	'Legume' => array(
    		(int) 0 => '2',
    		(int) 1 => '3'
    // 2 et 3 étant des ids de légumes
    	)
    )
    Voici le code pour y parvenir (en ayant des légumes aléatoires), c'est pas si sorcier que cela :

    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
        public function add_random() {
            $this->Recette->create();
            $randomLegume = $this->Recette->Legume->find('all', array(
                'fields' => 'id',
                'order' => 'rand()',
                'recursive' => -1,
                'limit' => 2,
            ));
            $legumes = array_map(function($val) {
                return $val['Legume']['id'];
            }, $randomLegume);
     
            $data = array(
                'Recette' => array(
                    'description' => 'Nouveau',
                ),
                'Legume' => $legumes
            );
            $this->Recette->save($data);
            debug($data);
            exit;
        }
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  17. #17
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup, je vais tester ça!
    Bonne journée :-)

  18. #18
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    ça m'enregistre 'Nouveau' .... mais sinon ça marche niveau légume aléatoire (affichée dans le debug). Du coup j'ai essayé de bricoler mais rien n'y fait!

  19. #19
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    mais sinon ça marche niveau légume aléatoire
    Ca marche ou ça marche pas ?

    Tu as bien nommé ta table de liaison en suivant les conventions ? Tes liaisons sont bien déclarées et correctement écrites dans tes modèles ?
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  20. #20
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 96
    Points : 59
    Points
    59
    Par défaut
    ça ne marche pas dans le sens où ça ne m'enregistre pas la description du légume, mais juste 'Nouveau'. Par contre dans le debug la description s'affiche bien (j'ai changé le fields 'id' par 'description', vue que c'est cela qui m'intéresse)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Sauvegarder les données dans un fichier CSV
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2006, 14h06
  2. Réponses: 1
    Dernier message: 20/12/2005, 16h56
  3. Importer seulement les données d'un autre base
    Par Tunisiano32 dans le forum Access
    Réponses: 5
    Dernier message: 29/10/2005, 10h37
  4. [C#][ProgressBar]Obtenir les données depuis un autre objet
    Par Kcirtap dans le forum Windows Forms
    Réponses: 7
    Dernier message: 26/10/2005, 12h56
  5. récupérer juste les données d'une autre table
    Par rangernoir dans le forum Access
    Réponses: 5
    Dernier message: 13/09/2005, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo