Partage
  • Partager sur Facebook
  • Partager sur Twitter

Doctrine

Table de jointure

    30 septembre 2010 à 21:10:32

    Bonsoir, tout d'abord je tiens à remercier l'auteur de ce tuto bien construit et claire (tout ce qui me fallait). Cependant, de mon côté, j'ai un problème pour créer la liaison entre 2 tables via une table de jointure.

    Afin d'éclaircir ma question, j'explique ma vision des choses.
    J'ai donc une table, que j'appel <Annonce>, que je veux relier à une table que je considère comme de Référence que j'appellerais <Options>. Cette table contient tout un tas d'options que mon utilisateur choisit pour agrémenter son Annonce.

    Alors j'aimerais créer une table de jointure qui va donc lier plusieurs Options à différentes Annonces pouvant être saisies.

    Merci par avance pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      1 octobre 2010 à 8:28:01

      salut,

      c'est pas dur, tu dois créé une table supplémentaire que tu nommeras comme tu veux.
      cette table contiendras les propriétés suivantes :

      CREATE TABLE nom {
          id_annonce int,
          id_option int,
          PRIMARY KEY(id_annonce, id_option),
          FOREIGN KEY(id_annonce) references <annonce>(id_annonce),
          FOREIGN KEY(id_option) references <option>(id_option)
      };
      


      voila
      • Partager sur Facebook
      • Partager sur Twitter
        1 octobre 2010 à 12:55:32

        Merci pour cette réponse, cependant, j'aurais besoin d'être un peu plus guidé, notamment sur la manière d'instancier la relation.

        Comment dois-je le développer ?

        Voilà mon YAML
        AnnounceOption:
          tableName: aoption
          columns:
            option_id:
              type: integer
            announce_id:
              type: integer
          relations:
            Announce:
              local: announce_id
              foreign: id
              refClass: Announce
            Option:
              local: option_id
              foreign: id
              refClass: Option
        

        Et mon
        $announce = new Announce();
        if (!empty($_POST['option'])) {
        	if(count($_POST['option']) > 0) {
        		$ids = array();
        		for ($i = 0; $i < count($_POST['option']); $i++) {
        			$ids[] = $_POST['option'][$i];
        		}
        		$q = Doctrine_Query::create()
        			 ->from('Option o')
        			 ->whereIn('o.id', $ids);
        		$optionItems = $q->execute();
        		$anounce->AnnounceOptions = $optionItems;
        	}
        }
        


        Merci pour vos réponses.
        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2010 à 19:58:44

          Utilise Doctrine_Record::link()
          • Partager sur Facebook
          • Partager sur Twitter

          Doctrine

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown