あなたはあまりにも多くの詳細を提供しなかったので、ここでいくつかの例を作ります.
FriendsList
Entity と EntityとのOne-to-Many
関係があるとしましょうFriend
。
$List = $this->getDoctrine()
->getEntityManager()
->getRepository('SomeBundle:FriendsList')
->find($id);
// The list you pulled in by ID can now be used
$List->getId();
foreach($List->getFriends() as $Friend)
{
// Each friend will be output here, you have access
// to the Friend methods now for each.
$Friend->getId();
$Friend->getFirstName();
$Friend->getLastName();
$Friend->getDOB();
$Friend->getFavoriteColor();
}
デフォルトでは、リレーションシップを作成すると、コレクションを取得するメソッドが作成されます。この例getFriends
では、エンティティの配列を返します。エンティティを生成したら、エンティティ モデルを見て、利用可能なメソッドを確認します。デフォルトでは、エンティティ内のプロパティごとに 1 つ作成され、コレクション用に追加のものが作成されます。
SomeCool/Bundle/Entity/FriendsList
Somecool/Bundle/Entity/Friend
YAML 構成を使用する場合、1 対多の関係は次のようになります。
SomeCool\Bundle\Entity\FriendsList:
type: entity
table: null
oneToMany:
friend:
targetEntity: Friend
mappedBy: friendslist
cascade: ["persist"]
SomeCool/Bundle/Entity/Friend
manytoOne:
friends:
targetEntity: FriendsList
mappedBy: friend
cascade: ["persist"]
リポジトリへのアクセス
YAML 構成 (services.yml)
somebundle.bundle.model.friends:
class: SomeBundle/Bundle/Model/Friends
arguments: [@doctrine.orm.entity_manager]
コントローラーについて
$friendsModel = $this->get('somebundle.bundle.model.friends');
$Friends = $friendsModel->findByFirstName('Bobby');
foreach($Friends as $Friend)
{
$Friend->getLastName();
}