FOSElasticaBundle/Doctrine/MongoDB/Lookup.php

50 lines
1.2 KiB
PHP
Raw Normal View History

2014-04-25 13:31:04 +02:00
<?php
namespace FOS\ElasticaBundle\Doctrine\MongoDB;
use FOS\ElasticaBundle\Doctrine\AbstractLookup;
2014-05-15 14:55:35 +02:00
use FOS\ElasticaBundle\Type\TypeConfiguration;
2014-04-25 13:31:04 +02:00
class Lookup extends AbstractLookup
{
/**
* Returns the lookup key.
*
* @return string
*/
public function getKey()
{
return 'mongodb';
}
/**
* Look up objects of a specific type with ids as supplied.
*
2014-05-15 14:55:35 +02:00
* @param TypeConfiguration $configuration
2014-04-25 13:31:04 +02:00
* @param array $ids
* @return array
*/
2014-05-15 14:55:35 +02:00
public function lookup(TypeConfiguration $configuration, array $ids)
2014-04-25 13:31:04 +02:00
{
$qb = $this->createQueryBuilder($configuration);
$qb->hydrate($configuration->isHydrate());
$qb->field($configuration->getIdentifierProperty())
->in($ids);
return $qb->getQuery()->execute()->toArray();
}
/**
2014-05-15 14:55:35 +02:00
* @param TypeConfiguration $configuration
2014-04-25 13:31:04 +02:00
* @return \Doctrine\ODM\MongoDB\Query\Builder
*/
2014-05-15 14:55:35 +02:00
private function createQueryBuilder(TypeConfiguration $configuration)
2014-04-25 13:31:04 +02:00
{
$method = $configuration->getRepositoryMethod();
$manager = $this->registry->getManagerForClass($configuration->getModelClass());
return $manager->{$method}($configuration->getModelClass());
}
}