如何在symfony中连接多个表

时间:2015-11-02 18:49:48

标签: php symfony

我试图在symfony中将3个表相互链接。

我试图使用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;

class 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 %}

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

提前谢谢,

1 个答案:

答案 0 :(得分: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();
    }
}

这是ManyToMany关系的有效构造。在此处阅读更多相关信息:Doctrine 2 ORM documentation - 5. Association Mapping - 5.9. Many-To-Many, Bidirectional