2015-02-13 4 views
0

Я хотел бы отобразить объект формы самостоятельно. Дело в том, что я работаю с 36 000 городов в базе данных, а Doctrine не возвращает никакого результата, когда я выполняю запрос с помощью findBy. Но я задал это, написав свои методы.Картирование себя в Symfony2

Проблема заключается в том, что мне нужно просить город через поле сущности (потому что есть много данных, я использую select2 с данными удаленного пользователя). Пока что нет проблем, но когда я отправляю форму, Symfony не может привязывать идентификатор города к записи базы данных из-за отсутствия результата классического метода Doctrine.

Итак, мой вопрос: как я могу сказать, что Symfony использует мой метод репозитория вместо того, чтобы связать мои данные с Doctrine?

спасибо! И есть хороший день;)

+0

Вам было бы лучше разобраться в вопросе о доктрине. Просто предложение. – Cerad

ответ

0

Метод findBy() запроса параметр массива иногда люди упускают, что:

$result = $this->getDoctrine()->getManager() 
      ->getRepository("AcmeDemoBundle")->findBy(array(
       "city" => $city) 
      ); 

Если вы хотите использовать репозиторий вам просто нужно сопоставить его к классу:

/** 
* @ORM\Entity(repositoryClass="Acme/DemoBundle/Repository/CountryRepository") 
*/ 
class Country 
{ ... } 

Тогда в

class CountryRepository extends EntityRepository 
{ 
    public function getMySpecificCity($city) 
    { 
     $qb = $this->createQueryBuilder('c'); 
     $cities = $qb->select(*) 
        ->where("c.city =:city ")->setParameter('city', $city) 
        ->getQuery() 
        ->getResult(); 

     return $cities; 
    } 
    ... 
} 

Таким образом, вы ок n используйте его следующим образом:

$result = $this->getDoctrine()->getManager() 
      ->getRepository("AcmeDemoBundle")->getMySpecificCity($city); 
Смежные вопросы