Doctrine和Symfony2的继承映射问题?

时间:2015-05-11 11:45:33

标签: symfony doctrine-orm doctrine

我完成了已经由另一个开发人员实现的symfony2项目的工作,我的问题是继承映射,我有这样的声明:

/**
 * @ORM\Entity(repositoryClass="Myapp\MyBundle\Entity\Repository\ProductRepository")
 * @ORM\Table(name="product")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="inheritance", type="smallint")
 * @ORM\DiscriminatorMap(
 *         { 0 = "Product",
 *           1 = "Hotel", 2 = "Attraction", 3 = "Tour",
 *           4 = "Car", "5" = "Transfer"})
 */
 abstract class Product
 {
 ....

和转移课程:

/**
 * Transfer
 *
 * @ORM\Table(name="transfer")
 * @ORM\Entity(repositoryClass="Myapp\MyBundle\Entity\Repository\TransferRepository")
 */
 class Transfer extends Product
 {
  ....

当我在控制器中调用Transfer类时:

$em->getRepository('MyappMyBundle:Transfer')->findAll();

我收到此错误:

Method "name" for object "Myapp\MyBundle\Entity\Hotel" does not exist in MyappMyBundle:Transfer:index.html.twig at line 142

我不知道为什么symfony2坚持打电话给酒店班,即使我打电话给转班?

修改

这里是酒店课程:

/**
 * @ORM\Table(name="hotel")
 * @ORM\Entity(repositoryClass="Myapp\MyBundle\Entity\Repository\HotelRepository")
 */
 class Hotel extends Product
 {

index.html.twig

 ......
{% for t in transfers %}

                    <td>{{t.name}}</td>
 {% endfor %}

我可以添加的唯一一句话,当我在产品类中通过转移类更改酒店课程时,转学班的电话工作正常,关于酒店课他叫转学班吗?

  * @ORM\DiscriminatorMap(
  *         { 0 = "Product",
  *           1 = "Transfer", 2 = "Attraction", 3 = "Tour",
  *           4 = "Car", "5" = "Hotel"})

0 个答案:

没有答案