0

Doctrine ORMでsymfony 1.4を使用しています。1 対多の関係で関連付けられた 2 つのクラスがあり、「片側」のオブジェクトがあります。このオブジェクト、たとえば A を「多面」オブジェクト、たとえば B に関連付ける必要があります問題は、A には Doctrine_Collection プロパティにオブジェクトを 1 つだけ追加するメソッドがなく、代わりにDoctrine_Collection. どうすればこの関連付けを達成できますか?

私は次のようなものを持っています:

$a = new A();

$b = new B(); // Obviously, $b is not new, this is just for reference

$a->setB($b); // This is what I can't do. A::setB() receives a 
              // Doctrine_Collection of objects of type B, and I don't
              // know how to build it.

お願いします、どんな助けでも本当に感謝します!!! ありがとう!

編集:

うまく説明できていなかったのかもしれません。私の関係は適切に設定されています。オブジェクトを取得しようとしているわけではありません。代わりに、オブジェクトを設定しようとしています。問題は、メソッドがオブジェクト自体ではなく、パラメーターとして a をA::setB()想定していることです。Doctrine_Collectionそれをビルドする方法がわかりません。それがDoctrine_Collection私がここで求めていることです...の関連オブジェクトの に追加$bするだけです。Doctrine_Collection$a

4

2 に答える 2

2

だけをビルドする必要がある場合はDoctrine_Collection、次のように実行できます。

// here, 'B' is the type of objects in the collection
$collection = new Doctrine_Collection("B");
$collection->add($b);

$a->setB($collection);

次のこともできます。

$a->b[] = $b;

私が知る限り、Doctrine は関係が存在しない場合は追加し、存在する場合は無視します。

于 2011-12-23T19:24:45.500 に答える
1

これはあなたが説明しているのと同じように可能であるはずだと思いますが、私はそうする必要はありませんでした。まず、私があなたの質問をどのように理解しているかを述べさせてください。あなたは2つのモデルの間に1対多の関係があります。これを読みやすくするために、片側のカテゴリと多くの投稿を呼び出します。$ category-> add($ posts)のように、関数呼び出しによって投稿の教義コレクションをカテゴリに割り当てることができるようにする必要があります。

ほとんどの人は、一方の側ではなく、多くの側からこれを行うことになります。つまり、$ post-> setCategory($ category)を使用することに慣れています。

個人的には、投稿を調べて、それぞれにカテゴリを割り当てます。いくつかの場所でこれを行う必要がある場合は、これを処理するためにカテゴリクラスにカスタム関数を作成する必要があります。

于 2011-12-23T19:11:50.183 に答える