2012-02-29 23 views
1

私はPropertyAmenityの2つのモデルを持っています。それらの間の関係は多岐にわたります。参照クラスはPropertyAmenityです。単一のレコードを1つのモデルに挿入したい場合、それは簡単です。 doctrine - 多対多関係テーブルのレコードを挿入

Property

$property = new Property(); 
$property->serial = 'SER09088'; 
$property->title = 'Some title'; 
$property->save(); 

に挿入すると、私は何をしたいことはPropertyに参照クラスPropertyAmenityに保持するのレコードを既存の設備を追加していることが

$amenity = new Amenity(); 
$amenity->name = 'Swimming Pool'; 
$amenity->save(); 

あるアメニティにレコードを挿入しますたとえば、次のようなものです。私は上記のコードをしようとすると、

$property = new Property(); 
$property->serial = 'SER09088'; 
$property->title = 'Some title'; 
$property->PropertyAmenity->amenity_id[] = 1; 
$property->save(); 

それは私に次の例外を与える

追加がPropertyAmenity

のためにサポートされていない状況が、私は、ユーザーから、フォームから集団的な情報を収集しています。例えば、ユーザはPropertyに関連するすべての値を入力し、フォームから既存のMultiple Amenitiesを選択して提出する。私はproperty_idamenity_idという2つの列からなるproperty_amenityテーブルにプロパティテーブルと選択されたアメニティにプロパティを保存する必要があります。どのようにこの値をdoctrineに挿入しますか?

答えて

1

少し掘り下げた後、私は自分自身で解決策を見つけたので、期待通りに実装するのは簡単です。私がしなければならなかった唯一の変化があった。

$property->PropertyAmenity[]->amenity_id = 1; 
$property->PropertyAmenity[]->amenity_id = 3; 
$property->PropertyAmenity[]->amenity_id = 5; 

するために、この

$property->PropertyAmenity->amenity_id[] = 1; 

から

とそれが動作するには、それは誰かが

:)を役に立てば幸い