Задать вопрос
ronik55
@ronik55
Simply good guy, who can press any key ;)

Symfony как сделать регистрозависимвый поиск с помощью entity manager?

Приветствую комрады. Нужно сделать регистрозависемый поиск. Но естественно em не может этого, либо я не знаю как заставить его. Есть возможность сделать поиск регистрозависемый на нативном SQL но не хочется, хочется через em.

Ктонить знает пути решения?

$em = $this->getDoctrine()->getManager();
$links = $em->getRepository('AppBundle:Links')->findOneByCode($request->get('code'));

Сенкс...
  • Вопрос задан
  • 315 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Если вы не заметили, вы получаете у EntityManager объект репозитория, к которому и обращаетесь. Вам нужно репозиторий для вашей сущности расширить методом, который будет делать регистронезависимый поиск.
Ответ написан
Комментировать
AndreyShakhtarin
@AndreyShakhtarin
Один из Землян

$em = $this->getDoctrine()->getManager();
$links = $em->getRepository('AppBundle:Links')->findOneByCode($request->get('code'));


идем в класс Репозиторий(AppBundle/Repository/Links или создаем ):
namespace AppBundle/Repository/Links;

use use Doctrine\ORM\EntityRepository;

class Links extends EntityRepository
{
      public function findOneByCode ( $code )
      //здесь реализуем выборку так как требуется
      // для приведения в верхний регистор используем php встроеные 
      //функции к примеру strtoupper($code)
     // проверяем значение, есть такое значение в бд
     // если есть заносим в массив
     // и так ищем в разных регистрах значение
     //может возникнуть несколько значений в разных регистрах
     // а если так то ето уже просто findByCode
     //и возвращаем значение виде  массива в котором есть свои значения
     //но что б избежать данной проблемы проще хранить в бд с каким либо определенным
     // регистром данные      
}

Можно так реализовать , возможно есть еще лучшее вариант ;-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы