Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 关系实体问题_Entity Framework_Symfony_Symfony 3.2 - Fatal编程技术网

Entity framework 关系实体问题

Entity framework 关系实体问题,entity-framework,symfony,symfony-3.2,Entity Framework,Symfony,Symfony 3.2,我读了一些关于ORM&Symfony的文档,但英语不是我的母语,也许我错过了一些东西:) 我将在预订和眼镜之间加入 我有一个错误: [语义错误]第0行,靠近“r WHERE a.id”的第70列:错误:类AppBundle\Entity\Reservation没有名为Reservation的关联 我的实体 class Reservation { /** * @ORM\ManytoOne (targetEntity="AppBundle\Entity\Spectacles", i

我读了一些关于ORM&Symfony的文档,但英语不是我的母语,也许我错过了一些东西:) 我将在预订和眼镜之间加入 我有一个错误:

[语义错误]第0行,靠近“r WHERE a.id”的第70列:错误:类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();


    }
}
编辑:

我迷路了;(我想这是我和symfony之间的大问题……我试着读doc,但没什么清楚的,也许这不是我的母语

我想创建这个模式,你能帮我提供源代码的结果吗

请参见下面的模式


您的关系无效,应为:

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;
}

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

您能在问题中添加您想要实现的目标吗?看起来您正在加入
保留
(通过执行
->将('a.Reservation','r')
)加入
保留
(作为其
保留存储库
)。您可能想加入
a.biocket
,或者在
biocketrepository
中执行类似于
a.reservation
的操作,这取决于您尝试执行的操作。感谢Jakub,我尝试使用biocket Repository(这是合乎逻辑的),但我遇到了一个类似于上一个错误的错误。[语义错误]第0行,靠近“r WHERE a.id”的第69列:错误:类AppBundle\Entity\Occomes没有名为Reservation@akkusativeObjekt的关联。我只是尝试加入到Understand。默认情况下,Repository::createQueryBuilder使用与存储库关联的实体类型。因此,保留存储库假定您要从Reservation中选择。要选择从眼镜中ect,添加->从('AppBundle:眼镜','s'),并在leftJoin语句中使用s.reservations。并且您发布的眼镜注释都是乱七八糟的。请花时间阅读手册中的章节。我尝试了,但出现了一个错误[语义错误行0,靠近'r,AppBundle:Biothes'的第69列:错误:类AppBundle\Entity\Biothes没有名为Reservation的关联:代码:return$this->createQueryBuilder('a')->from('AppBundle:Biothes','s')->join('a.Reservation','r')->其中('a.id=:id'))->setParameter('id',$id)->getQuery()->getResult();感谢您的支持,我添加了我想要的模式。我希望了解它是如何工作的/