您没有提供太多细节,所以我将在这里举一些例子。
假设您有一个 EntityFriendsList
和One-to-Many
与 Entity 的关系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
中,它返回一个实体数组。生成实体后,查看您的实体模型以查看哪些方法可用。默认情况下,会为实体中的每个属性创建一个,并为集合创建其他属性。
SomeCool/Bundle/Entity/FriendsList
Somecool/Bundle/Entity/Friend
如果您使用 YAML 配置,以下是一对多关系的样子。
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();
}