Symfony 原则2可以';t在多通关系中使用nullable=false?

Symfony 原则2可以';t在多通关系中使用nullable=false?,symfony,doctrine,doctrine-orm,Symfony,Doctrine,Doctrine Orm,用户有一个与之关联的包。许多用户可以引用同一个包用户如果未定义包,则无法存在用户应拥有该关系。关系是双向的,因此包中有零个或多个用户 这些要求导致条令2中用户的多通关系和包的多通关系。但是user表中的package\u id允许null值。我已尝试设置nullable=false但命令: php app/console doctrine:generate:entities DL --path="src" --no-backup 表示关系ManyToOne没有属性nullable我错过了什么

用户
有一个与之关联的
。许多用户可以引用同一个包<代码>用户如果未定义
,则无法存在<代码>用户应拥有该关系。关系是双向的,因此
包中有零个或多个用户

这些要求导致条令2中
用户的
多通
关系和
包的
多通
关系。但是
user
表中的
package\u id
允许
null
值。我已尝试设置
nullable=false
但命令:

 php app/console doctrine:generate:entities DL --path="src" --no-backup
表示关系
ManyToOne
没有属性
nullable
我错过了什么?

class User
{

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

    /**
     * @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
     */
    private $package;

}

class Package
{

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

    /**
     * @ORM\OneToMany(targetEntity="User", mappedBy="package")
     */
    private $users;

}
编辑:已解决。请注意这是错误的(注意双引号):

虽然这是正确的:

@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)

在多工单关系上使用JoinColumn注释:

/**
 * @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
 * @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
 */
private $package;
manyTone本身不能为null,因为它与特定列无关。另一方面,JoinColumn标识数据库中的列。因此,您可以使用“正常”属性,如nullable或unique

仅限

@ORM\JoinColumn(nullable=false)


是必需的

谢谢,我已经尝试过了,但不幸的是,
package\u id
列仍然被标记为空-是,默认-空。任何帮助都是非常感谢的。不管怎样,一个双引号完全打破了这件事。也就是说,
nullable=“false”
是错误的!您是否尝试整体删除数据库并创建新数据库?我只是查看了一下我的数据库(使用与上面提到的相同的JoinColumn注释),它被标记为NotNull!感谢这一点,我一直在想,为什么我不能用
@ORM\Column(nullable=true)
使我的manytoone可以为null!如果配置了正确的选项,但仍然看到数据库列的值错误,请记住清除Entity Manager的元数据缓存。在Symfony上,您可以使用
console-doctor:cache:clear-metadata
命令
/**
 * @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
 * @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
 */
private $package;