Составление карты формы в Symfony2

0

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

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

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

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

  • 0
    Тебе лучше разобраться в проблеме Доктрины. Просто предложение.
Теги:
dictionary
forms
doctrine

1 ответ

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;
    }
    ...
}

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню