2015-11-02 45 views
1

我想在symfony中将3个表格彼此链接起来。如何在symfony中加入多个表格

我想链接电影到多个流派的使用3表。

表: 电影, movietogenre, 流派

我想一个电影ID链接到movietogenre ID的流派。 这是我有:

级的电影:

 /** 
     * @var integer 
     * 
     * @ORM\Column(name="id", type="integer") 
     * @ORM\Id 
     * @ORM\GeneratedValue(strategy="AUTO") 
     * @var ArrayCollection 
     * 
     * @ORM\ManyToOne(targetEntity="movietogenre", inversedBy="films") 
     * @ORM\JoinColumn(name="movie_id", referencedColumnName="movie_id") 
     */ 
     private $id; 

类movietogenre

/** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="movie_id", type="integer") 
    * 
    * @var ArrayCollection 
    * 
    * @ORM\OneToMany(targetEntity="films", mappedBy="movietogenre") 
    */ 
    private $movieId; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="genre_id", type="integer") 
    * 
    *@var ArrayCollection 
    * 
    * @ORM\OneToMany(targetEntity="genres", mappedBy="movietogenre") 
    */ 
    private $genreId; 

类体裁:

/** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * 
    * @var ArrayCollection 
    * 
    * @ORM\ManyToOne(targetEntity="movietogenre", inversedBy="genres") 
    * @ORM\JoinColumn(name="genre_id", referencedColumnName="id") 
    */ 
    private $id; 

树枝:

{% for entity in entities if entity.einddatum|date('Y-m-d') > "now"|date("Y-m-d") %} 
    <div class="movie-item col-md-12 col-lg-12 col-sm-12 col-xs-12"> 
     <div class="poster col-md-2 col-lg-2 col-sm-2 col-xs-0"> 
      <img class="img-responsive" src="{{ entity.filmposter }}" /> 
     </div> 
     <div class="info col-md-10 col-lg-10 col-sm-10 col-xs-12"> 
      <a href="{{ path('films_show', { 'id': entity.id }) }}"><h2>{{ entity.titel }}</h2></a> 
      <p>{{ entity.omschrijving }}</p> 
      <p class="text-muted">{{ entity.id.genre_id.genre }} | speelduur: {{ entity.speelduur|date("H:i:s") }} </p> 
      <a href="{{ path('films_show', { 'id': entity.id }) }}"> Meer informatie </a> 
     </div> 
    </div> 
    {% endfor %} 

我知道这可能真的很糟糕,请纠正我。

感谢进取,

+0

究竟什么不行?你目前的方法的结果是什么? – somesoaccount

回答

1

类电影

class Movie { 
    /** 
    * @ManyToMany(targetEntity="Genre", inversedBy="movies") 
    * @JoinTable(name="movietogenre") 
    **/ 
    private $genres; 

    public function __construct() { 
     $this->genres = new \Doctrine\Common\Collections\ArrayCollection(); 
} 

类类型:

class Genre {  
    /** 
    * @ManyToMany(targetEntity="Movie", mappedBy="genres") 
    **/ 
    private $movies; 

    public function __construct() { 
     $this->movies = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 
} 

这是多对多关系的有效建设。在这里阅读更多关于它:Doctrine 2 ORM documentation - 5. Association Mapping - 5.9. Many-To-Many, Bidirectional