User
には、1つのPackage
が関連付けられています。多くのユーザーが同じパッケージを参照できます。 User
は、Package
が定義されていないと存在できません。 User
は関係を所有する必要があります。リレーションは双方向であるため、Package
には0人以上のユーザーが含まれています。Doctrine 2はmanyToOne関係でnullable = falseを使用できませんか?
これらの要件はnull
値を可能にする(すなわち、外部キーである)user
表にpackage_id
しかし教義2のPackage
のUser
とOneToMany
関係のためManyToOne
関係につながります。私は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;
}
EDIT:解決しました。これは(二重引用符に注意してください)間違っていること注意してください。
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")
これは正しいですが:
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
ありがとう、私は試しましたが、残念ながら 'package_id'列にはNullとしてフラグが設定されています - はい、デフォルト - NULLです。どんな助けも大歓迎です。 – gremo
気にしないでください、二重引用符は完全に物を壊します。これは 'nullable =" false "'が間違っています! – gremo
データベースを削除して新規作成しようとしましたか?私はちょうど(上記の同じJoinColumnアノテーションを使用して)私のデータベースを見て、NotNullとしてフラグが立てられています! – Sgoettschkes