gre*_*emo 108 doctrine symfony doctrine-orm
一个User
有一个Package
与它相关联.许多用户可以参考相同的包.User
没有Package
定义就不存在.User
应该拥有这种关系.关系是双向的,因此其中Package
包含零个或多个用户.
这些要求导致了Doctrine 2中的ManyToOne
关系User
和OneToMany
关系Package
.但是package_id
在user
表(即外键)中允许null
值.我试过设置nullable=false
但命令:
php app/console doctrine:generate:entities DL --path="src" --no-backup
Run Code Online (Sandbox Code Playgroud)
说这种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;
}
Run Code Online (Sandbox Code Playgroud)
编辑:解决了.请注意这是错误的(注意双引号):
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")
Run Code Online (Sandbox Code Playgroud)
虽然这是正确的:
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
Run Code Online (Sandbox Code Playgroud)
Sgo*_*kes 186
在ManyToOne关系上使用JoinColumn批注:
/**
* @ORM\ManyToOne(targetEntity="Package", inversedBy="users")
* @ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
*/
private $package;
Run Code Online (Sandbox Code Playgroud)
ManyToOne本身不能为空,因为它与特定列无关.另一方面,JoinColumn标识数据库中的列.因此,您可以使用"普通"属性,如可空或唯一!
归档时间: |
|
查看次数: |
69128 次 |
最近记录: |