Я хотел бы отобразить сущность формы самостоятельно. Дело в том, что я работаю с 36 000 городов в базе данных, и Doctrine не возвращает никакого результата, когда я выполняю запрос с помощью findBy. Но я настроил это, написав свои собственные методы.
Проблема в форме, которую мне нужно запросить для города через поле сущности (потому что данных много, я использую select2 с данными пульта). Пока нет проблем, но когда я отправляю форму, Symfony не может привязать идентификатор города к записи в базе данных из-за отсутствия результата классического метода Doctrine.
Итак, мой вопрос: как я могу сказать Symfony использовать метод моего хранилища вместо метода Doctrine для привязки моих данных?
Большое спасибо ! И хорошего дня;)
Метод 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);
Других решений пока нет …