R
R
Roman2016-10-23 21:48:22
MySQL
Roman, 2016-10-23 21:48:22

Symfony how to make case sensitive lookup using entity manager?

Greetings comrades. You need to do a case-sensitive search. But of course em can't, or I don't know how to force it. It is possible to make the search case-sensitive in native SQL, but I don’t want to, I want to use em.
Does anyone know a solution?
$em = $this->getDoctrine()->getManager();
$links = $em->getRepository('AppBundle:Links')->findOneByCode($request->get('code'));
Senks...

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Alexey Skobkin, 2016-10-24
@skobkin

In case you haven't noticed, you're getting a repository object from the EntityManager, which you're accessing. You need to expand the repository for your entity with a method that will do a case-insensitive search.

A
Andrey Shakhtarin, 2016-10-26
@AndreyShakhtarin


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

go to the Repository class (AppBundle/Repository/Links or create ):
namespace AppBundle/Repository/Links;

use use Doctrine\ORM\EntityRepository;

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

You can implement it this way, maybe there is an even better option ;-)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question