Вы можете использовать метод findBy
, который наследуется и присутствует во всех репозиториях.
Пример:
$criteria = array('name' => 'someValue', 'status' => 'enabled');
$result = $em->getRepository('SomeEntity')->findBy($criteria);
Вы можете создать findByExample
метод в одном из ваших репозиториев, используя такое определение:
class MyRepository extends Doctrine\ORM\EntityRepository {
public function findByExample(MyEntity $entity) {
return $this->findBy($entity->toArray());
}
}
Чтобы это сработало, вам нужно будет создать собственный базовый класс для сущностей, реализуя метод toArray
.
MyEntity
также может быть интерфейсом, который ваши конкретные сущности должны будут снова реализовать метод toArray
.
Чтобы сделать это доступным во всех ваших репозиториях, убедитесь, что вы расширяете свой базовый класс репозитория - в этом примере MyRepository
.
P.S Я полагаю, вы говорите о Доктрина 2.x