7
DoctrineでオプションのOneToOneマッピングを作成しようとしています。DoctrineオプションのOneToOneマッピング
私にはすべての都市と郵便番号が利用可能なテーブルがあります(このテーブルは変更しないでください)。住所とマップされた都市のテーブルがあります。しかし、時には私は最初に都市を私の住所に追加したくない(おそらく後でそれが起こる)。しかし、私はアドレスに都市を追加しないと、AddressオブジェクトはCityオブジェクトでなければならない 'null'のようなオブジェクトがないので、Addressの永続性が私にReflection Exceptionを与えます。
都市のテーブルに何も追加したり削除したりする必要がないので、空の都市を毎回データベースに追加したくありません。
提案がありますか?それとも私は何が欠けていますか?私はと考え
class Address{
/**
* @OneToOne(targetEntity="City")
* @JoinColumn(name="city_id", referencedColumnName="id")
*/
private $city = '';
考えられる解決策:
- 作成
- (多くのオーバーヘッドが発生する場合があります)デシベルで、空の街オブジェクトを作成し、新しく作成されたAddressオブジェクトに常にこれを割り当てます都市の配列とManyToMany関係があるので、0個以上の都市を追加することができます(私は自分のAddressオブジェクト内の都市の数を制限できます)が、マッピングテーブルが必要です。
注釈
@JoinColumn
にどのような方法を追加します。私は試しましたが、運が無ければ... –残念なことに、空のパラメータでINSERT INTOクエリを生成し、エラーが発生します。 2番目のパラメータ(1対1)がありません。 – Athlan
それは私のためには機能しません。 nullable = trueを追加しましたが、成功しませんでした。とにかくoptionnalとして1対1の関係を作ることはありますか? – skonsoft