关系实体的问题

时间:2017-05-09 11:19:15

标签: entity-framework symfony symfony-3.2

我读了一些关于ORM& amp;的文件。 Symfony但英语不是我的母语,也许我想念一些东西:) 我将在预订和之间进行联接。眼镜 我有这个错误:

  

[语义错误]第0行,第70行附近' r WHERE a.id':错误:类AppBundle \ Entity \ Reservation没有名为Reservation的关联

我的实体

class Reservation
{
    /**
     * @ORM\ManytoOne (targetEntity="AppBundle\Entity\Spectacles", inversedBy="id")
     * @ORM\JoinColumn(name="id", referencedColumnName="id")
     */
    private $spectacle;
}



class Spectacles
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Reservation", mappedBy="spectacle")
     * 
     */
    private $id;
}

我的存储库

class ReservationRepository extends \Doctrine\ORM\EntityRepository
{
     public function FindHowMunchRemains($id)
    {

         return $this->createQueryBuilder('a')
                 ->join('a.Reservation','r')
                 ->where('a.id=:id')
                 ->setParameter('id',$id)
                 ->getQuery()
                 ->getResult();


    }
}

编辑:

我迷失了ORM;(我认为这是我与symfony的重大问题......我试着阅读doc但是没有什么它很明显也许它不是我母亲语言。

我想创建这个架构,你能帮我解决一下只有KEY的源代码的结果吗?

请参阅

下的架构

SCHEMA DB

1 个答案:

答案 0 :(得分:0)

您的关系无效,应该是:

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

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Spectacle", inversedBy="reservations")
     */
    private $spectacle;
}



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

    /**
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Reservation", mappedBy="spectacle")
     */
    private $reservations;
}

另一方面,您的查询无效。究竟你想得到什么?