我不能使JoinColumn可以为空

时间:2016-02-12 09:54:00

标签: php symfony doctrine

我正在尝试在Symfony / Doctrine实体中创建多个零或一个链接。我认为以下应该起作用:

    /**
 * @var integer
 *
 * @ORM\Column(name="vragenlijst_id")
 * @ORM\ManyToOne(targetEntity="GroNed\AdminBundle\Entity\WalkthroughType")
 * @ORM\JoinColumn(name="vragenlijst_id", referencedColumnName="id", nullable=true)
 */
private $vragenlijst;

但是:Doctrine似乎不同意我的观点:

[bhillier@devserver-2 Symfony]$ php app/console doctrine:schema:update --dump-sql
ALTER TABLE walkthrough CHANGE vragenlijst_id vragenlijst_id INT NOT NULL;

我可能错过了一些愚蠢的东西,但我现在看不到什么。有没有人有任何想法?

如果有帮助:

[bhillier@devserver-2 Symfony]$ /usr/local/apache2/bin/apachectl -version
Server version: Apache/2.4.18 (Unix)
Server built:   Jan 26 2016 06:31:19
[bhillier@devserver-2 Symfony]$ /opt/php-5.6/bin/php --version
PHP 5.6.17 (cli) (built: Jan 26 2016 05:36:55)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
[bhillier@devserver-2 Symfony]$ php app/console --version
Symfony version 2.6.13 - app/dev/debug

2 个答案:

答案 0 :(得分:2)

您需要删除@var@ORM\Column注释,这些注释在使用关联时不是必需的。

答案 1 :(得分:2)

根据您的注释,您要告诉Doctrine创建一个名为vragenlijst_id的列,并且您不会对它的可归属性进行任何说明。您正在使用注释执行此操作:

 @ORM\Column(name="vragenlijst_id")

正确的注释将是:

  /**
    * @var integer
    *
    * @ORM\ManyToOne(targetEntity="GroNed\AdminBundle\Entity\WalkthroughType")
    */
   private $vragenlijst;