User
有一个Package
与之关联。许多用户可以参考相同的包。如果未定义User
,Package
将无法存在。 User
应该拥有这种关系。关系是双向的,因此Package
中包含零个或多个用户。
这些要求会导致{2}中ManyToOne
和User
关系OneToMany
与Package
关系package_id
user
null
这是外键)允许nullable=false
值。我已经尝试设置 php app/console doctrine:generate:entities DL --path="src" --no-backup
但命令:
nullable
表示关系ManyToOne
没有属性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")
编辑:已解决。请注意这是错误的(注意双引号):
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
虽然这是正确的:
{{1}}
答案 0 :(得分:177)
在ManyToOne关系中使用JoinColumn注释:
/**
* @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
* @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
*/
private $package;
ManyToOne本身不能为空,因为它与特定列无关。另一方面,JoinColumn标识数据库中的列。因此,您可以使用" normal"属性如nullable或unique!
答案 1 :(得分:0)
仅
@ORM \ JoinColumn(nullable = false)
是必需的