doktrin php createQueryBuilder karakter khusus

Basis data menyimpan nilai "&Anda" tetapi kueri di bawah ini tidak memberikan hasil

$buildQuery = $this->createQueryBuilder('r')
        ->where('r.TitreSearch LIKE :term')       
        ->setParameter('term', "%&You%")            
    ;

Di sisi lain, jika saya mencari "Anda", saya mendapatkan hasilnya

mengapa doktrin tidak memahami karakter "&"?


person stloc    schedule 20.02.2018    source sumber


Jawaban (1)


Masalahnya bukan pada karakter ampersand tetapi pada query itu sendiri.

Jika Anda ingin LIKE mencocokkan pola dalam nilai kolom, Anda harus mengapit istilah penelusuran dengan tanda persentase (yaitu %term%). Tanpa tanda persentase, LIKE bertindak sama seperti operator =; itu mencari kecocokan persis.

Coba yang berikut ini:

$term = "&You";
$buildQuery = $this->createQueryBuilder('r')
        ->where('r.TitreSearch LIKE :term')
        ->setParameter('term', "%$term%");
person lxg    schedule 20.02.2018
comment
Oke, tapi saya dapat meyakinkan Anda bahwa Doctrine tidak memiliki masalah dengan ampersand itu sendiri. Saya baru saja menguji di salah satu aplikasi saya sendiri, file tersebut berfungsi. Mungkin ada masalah yang berbeda, mis. ampersandnya (URL-) dikodekan? - person lxg; 20.02.2018
comment
bagaimana menjelaskan permintaan pertama di halaman ini dengan string langsung &Anda tidak berfungsi? (DB SQLITE) - person stloc; 21.02.2018