Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
776 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Symfony 3.3.6] Récupération de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Symfony 3.3.6] Récupération de données

n°2316778
mecano31
Posté le 10-06-2018 à 20:13:16  profilanswer
 

Bonjour à tous,
 
J'ai un souci de récupération de mes données. En effet, j'ai 2 entités : Theme et Category qui sont liées par une relation ManyToOne bidirectionnelle. Ça devrait être une relation ManyToMany mais la base de données a été conçue comme ça et je ne peut pas revenir là-dessus. Mon problème quand j'essaye de récupérer mes infos du côté inverse de la relation je n'obtiens rien. Mes requêtes me renvoient un array vide et je ne sais pas comment contourner ce problème. J'avoue c'est un problème particulier car dans mon entité propriétaire Category qui contient le champ (qui est supposé être la clé étrangère) qui est un type varchar(100) et qui contient les identiants des Thèmes (Entité Theme). Voici un exemple du contenu de ce champ :
 
theme_id  
29, 34
29, 31
29
21
29, 34
25, 33, 34
29, 31, 34
 
Mon Controller est le suivant :

Code :
  1. class PostController extends Controller
  2. {
  3.     public function viewAction(Request $request)
  4.     {
  5.         $id = $request->query->get('id');
  6.         $em = $this->getDoctrine()->getManager();
  7.         $tab = [];
  8.         $themes = $em->getRepository(Theme::class)->findBy(array('id' => $id));
  9.         foreach ($themes as $theme) {
  10.             $theme = $em->getRepository(Theme::class)->find($theme->getId());
  11.             foreach ($theme->getCategories() as $cats) {
  12.                 if ($cats != null) {
  13.                     array_push($tab, $cats);
  14.                 }
  15.             }
  16.         }
  17.         return $this->render('content.html.twig', array(
  18.             'themes' => $themes,
  19.             'cats' => $tab
  20.         ));
  21.     }
  22. }


 
Ma vue:

Code :
  1. {% for theme in themes %}
  2.     <h2>{{ theme.name }}</h2>
  3.     {% for cat in theme.cats %}
  4.         <div>
  5.             <p>{{ cat.title }}</p>
  6.             <p>{{ cat.content }}</p>
  7.         </div>
  8.     {% endfor %}
  9. {% endfor %}


 
Mes entités:

Code :
  1. namespace AppBundle\Entity;
  2. use Doctrine\ORM\Mapping as ORM;
  3. /**
  4. * Theme
  5. *
  6. * @ORM\Table(name="theme" )
  7. * @ORM\Entity(repositoryClass="AppBundle\Repository\ThemeRepository" )
  8. */
  9. class Theme
  10. {
  11.     /**
  12.      * @var int
  13.      *
  14.      * @ORM\Column(name="id", type="integer" )
  15.      * @ORM\Id
  16.      * @ORM\GeneratedValue(strategy="AUTO" )
  17.      */
  18.     private $id;
  19.     /**
  20.      * @var string
  21.      *
  22.      * @ORM\Column(name="name", type="string", length=255)
  23.      */
  24.     private $name;
  25.     /**
  26.      * @ORM\OneToMany(targetEntity="AppBundle\Entity\Category", mappedBy="theme" )
  27.      */
  28.     private $categories;
  29.     /**
  30.      * Get id
  31.      *
  32.      * @return int
  33.      */
  34.     public function getId()
  35.     {
  36.         return $this->id;
  37.     }
  38.     /**
  39.      * Set name
  40.      *
  41.      * @param string $name
  42.      *
  43.      * @return Theme
  44.      */
  45.     public function setName($name)
  46.     {
  47.         $this->name = $name;
  48.         return $this;
  49.     }
  50.     /**
  51.      * Get name
  52.      *
  53.      * @return string
  54.      */
  55.     public function getName()
  56.     {
  57.         return $this->name;
  58.     }
  59.     /**
  60.      * Constructor
  61.      */
  62.     public function __construct()
  63.     {
  64.         $this->categories = new \Doctrine\Common\Collections\ArrayCollection();
  65.     }
  66.     /**
  67.      * Add category
  68.      *
  69.      * @param \AppBundle\Entity\Category $category
  70.      *
  71.      * @return Theme
  72.      */
  73.     public function addCategory(\AppBundle\Entity\Category $category)
  74.     {
  75.         $this->categories[] = $category;
  76.         $this->categories->add($category);
  77.         $category->setTheme($this);
  78.         return $this;
  79.     }
  80.     /**
  81.      * Remove category
  82.      *
  83.      * @param \AppBundle\Entity\Category $category
  84.      */
  85.     public function removeCategory(\AppBundle\Entity\Category $category)
  86.     {
  87.         $this->categories->removeElement($category);
  88.     }
  89.     /**
  90.      * Get categories
  91.      *
  92.      * @return \Doctrine\Common\Collections\Collection
  93.      */
  94.     public function getCategories()
  95.     {
  96.         return $this->categories;
  97.     }
  98. }
  99. namespace AppBundle\Entity;
  100. use Doctrine\ORM\Mapping as ORM;
  101. /**
  102. * Category
  103. *
  104. * @ORM\Table(name="category" )
  105. * @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository" )
  106. */
  107. class Category
  108. {
  109.     /**
  110.      * @var int
  111.      *
  112.      * @ORM\Column(name="id", type="integer" )
  113.      * @ORM\Id
  114.      * @ORM\GeneratedValue(strategy="AUTO" )
  115.      */
  116.     private $id;
  117.     /**
  118.      * @var string
  119.      *
  120.      * @ORM\Column(name="title", type="string", length=255)
  121.      */
  122.     private $title;
  123.     /**
  124.      * @var string
  125.      *
  126.      * @ORM\Column(name="content", type="text" )
  127.      */
  128.     private $content;
  129.     /**
  130.      * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Theme", inversedBy="categories" )
  131.      * @ORM\JoinColumn(name="id", referencedColumnName="id" )
  132.      */
  133.     private $theme;
  134.     /**
  135.      * Get id
  136.      *
  137.      * @return int
  138.      */
  139.     public function getId()
  140.     {
  141.         return $this->id;
  142.     }
  143.     /**
  144.      * Set title
  145.      *
  146.      * @param string $title
  147.      *
  148.      * @return Category
  149.      */
  150.     public function setTitle($title)
  151.     {
  152.         $this->title = $title;
  153.         return $this;
  154.     }
  155.     /**
  156.      * Get title
  157.      *
  158.      * @return string
  159.      */
  160.     public function getTitle()
  161.     {
  162.         return $this->title;
  163.     }
  164.     /**
  165.      * Set content
  166.      *
  167.      * @param string $content
  168.      *
  169.      * @return Category
  170.      */
  171.     public function setContent($content)
  172.     {
  173.         $this->content = $content;
  174.         return $this;
  175.     }
  176.     /**
  177.      * Get content
  178.      *
  179.      * @return string
  180.      */
  181.     public function getContent()
  182.     {
  183.         return $this->content;
  184.     }
  185.     /**
  186.      * Set theme
  187.      *
  188.      * @param \AppBundle\Entity\Theme $theme
  189.      *
  190.      * @return Category
  191.      */
  192.     public function setTheme(\AppBundle\Entity\Theme $theme = null)
  193.     {
  194.         $this->theme = $theme;
  195.         return $this;
  196.     }
  197.     /**
  198.      * Get theme
  199.      *
  200.      * @return \AppBundle\Entity\Theme
  201.      */
  202.     public function getTheme()
  203.     {
  204.         return $this->theme;
  205.     }
  206. }


 
Merci par avance

mood
Publicité
Posté le 10-06-2018 à 20:13:16  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Symfony 3.3.6] Récupération de données

 

Sujets relatifs
[Symfony 3.x] Formulaire dans une popup en includeExcel 2016 - Inscription données saisie par formulaire
php - script de récupération infos système[Résolu] Données manquantes dans un état access
Symfony 4: config Swift Mailer & SMTP...Afficher mes données que si ma checkbox est cochée
Récupération d'une ligne dans la bddConstructeur, base de données et session
Form Wizard / Récupération submitProbleme performance et structure de donnees avec MongoDB
Plus de sujets relatifs à : [Symfony 3.3.6] Récupération de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR