我有一个拥有多个键的实体,我如何根据多个ID找到合适的对象?
$product = $em->getRepository('AcmeStoreBundle:Product')->find($id);
答案 0 :(得分:7)
你在这里要问的有点混乱。听起来好像你有一个带有复合键的实体(主键与多列相关),并希望根据它的主键值找到它,是吗?
如果是这样,find
方法将需要一个数组,其中包含构成密钥的每个字段的值:
$product = $em->getRepository('AcmeStoreBundle:Product')->find(array(
'key1' => 'value1',
'key2' => 'value2'
));
或者,您可以使用findOneBy
方法。当提供的字段组合不唯一时,这将非常有用,因为您可以提供第二个参数来定义排序。
$product = $em->getRepository('AcmeStoreBundle:Product')->findOneBy(array(
'key1' => 'value1',
'key2' => 'value2'
), array('updated_at' => 'DESC'));
答案 1 :(得分:1)
请参阅http://symfony.com/doc/2.0/book/doctrine.html#fetching-objects-from-the-database
$product = $em->getRepository('AcmeStoreBundle:Product')->findBy(
array('key1' => 'value1', 'key2'=>'value2')
);