User
ile ilişkili bir Package
vardır. Birçok kullanıcı aynı pakete başvurabilir. User
, Package
tanımlı olmadan bulunamaz. İlişkide User
bulunmalıdır. İlişki iki yönlüdür, bu nedenle Package
'un sıfır veya daha fazla kullanıcısı vardır.Doctrine 2, birçokToOne ilişkisinde nullable = false kullanamaz?
Bu gereksinimler User
için ManyToOne
ilişki ve user
tabloda Ancak package_id
Öğreti 2'de Package
arasında OneToMany
ilişkisi (yani, yabancı anahtar) null
değerler verir yol açar. Ben nullable=false
ama komutu ayarlama denedim:
php app/console doctrine:generate:entities DL --path="src" --no-backup
ilişkisi ManyToOne
için hiçbir özellik nullable
olmadığını söylüyor. Neyi eksik?
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;
}
DÜZENLEME: çözdü.
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")
bu doğru olsa: Bu (çift tırnak unutmayın) yanlış olduğunu unutmayın
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
Teşekkürler, denedim ama maalesef 'package_id 'sütunu hala boş olarak işaretlendi - Evet, Varsayılan - NULL. Herhangi bir yardım çok takdir edilmektedir. – gremo
Nevermind, çifte bir alıntıyı tümüyle kırmak. Bu 'nullable =' false ''yanlıştır! – gremo
Veritabanını tamamen silmeyi ve yeni oluşturmayı denediniz mi? Sadece benim veritabanına bir göz attım (yukarıda belirtildiği gibi aynı JoinColumn notunu kullanarak) ve NotNull olarak işaretlendi! – Sgoettschkes