更新架构时symfony实体OneToOne错误

时间:2014-01-08 18:51:18

标签: php symfony orm doctrine-orm

当我尝试按ID找到Miejsce实体时:

$m= $this->getDoctrine()
            ->getRepository('MiejsceObiektyBundle:Miejsce')
            ->find($id);

我收到此错误:

  

注意:未定义的索引:id in   vendor / doctrine / orm / lib / Doctrine / ORM / AbstractQuery.php第286行       500内部服务器错误 - ContextErrorException

理念和真正的联系是

where subdomain.rid=miejsce.id and subdomain.ridType=1

子域工作许多实体 - 所以我不希望从子域到miejsce的doctrine var。

ridType=1 = miejsce
ridType=2 = product
ridType=3 = other 

我可以在存储库中添加条件subdomain.ridType = 1 - 但是设置连接subdomain.rid = miejsce.id存在问题,因为miejsce没有子域的id引用 - 它不需要子域有它但不仅仅是miejsce。 ...... :)

这个想法有什么问题?可以在学说中使用吗?

Miejsce实体:

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

 /**
     * @ORM\OneToOne(targetEntity="Miejsce\DomainBundle\Entity\Subdomains")
     * @ORM\JoinColumn(name="id", referencedColumnName="rid")
     * @var Subdomains
     */
    protected $subdomain;

Subdomain实体:

class Subdomains
{



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

    /**
     * @ORM\Column(type="string")
     * @var string
     */
    private $name;

    /**
     * @ORM\Column(type="integer")
     * @var integer
     */
    private $rid;

    /**
     * @ORM\Column(type="integer")
     * @var integer
     */
    private $ridType;

2 个答案:

答案 0 :(得分:2)

Miejsce实体中的

/**
 * @ORM\OneToOne(targetEntity="Subdomains", mappedBy="miejsce")
 */
private $subdomain;
Subdomains实体中的

/**
 * @ORM\OneToOne(targetEntity="Miejsce", inversedBy="subdomain")
 * @ORM\JoinColumn(name="rid", referencedColumnName="id")
 */
private $miejsce;

还将Subdomains重命名为Subdomain - 实体名称应为单数

答案 1 :(得分:0)

试试这个:

 * @ORM\JoinColumn(name="subdomain_id", referencedColumnName="rid")