Pertimbangkan tiga string "tumpukan jerami" ini:
Sebuah) foo bar
b) welcome to foo bar industries
c) foo barer
Dan sekarang "jarum" saya:
foo bar
(Heh)
Saya ingin filter saya mencocokkan jarum saya dengan string tumpukan jerami a & b tetapi tidak c. Saya telah mencoba:
$collection->addAttributeToFilter('name', array('like' => '%'.$needle.'%'));
Tetapi hal di atas cocok dengan c.
Saya juga mencoba:
$collection->addAttributeToFilter('name', array('like' => '% '.$needle.' %')); // Note the spaces
Di atas hanya cocok dengan b.
Bantuan apa pun sangat kami hargai.
attributes
collection
collection-filtering
beingalex
sumber
sumber
addAttributeToFilter
harus diganti denganaddFieldToFilter
.Solusi yang mungkin adalah menggunakan
REGEXP
alih-alihLIKE
:Dari dokumentasi MySQL :
Perhatikan bahwa jika
$needle
dapat berisi karakter yang memiliki arti khusus dalam ekspresi reguler POSIX, Anda harus menghindarinya. Lihat juga: /programming/4024188/php-function-to-escape-mysql-regexp-syntaxsumber
Jawaban yang diterima tidak berfungsi dengan baik. Ini hanya memeriksa ruang sebelum dan sesudah teks.
Misalkan, Anda memiliki daftar berikut
Sekarang jika Anda mencoba mencari dengan jaket menggunakan jawaban yang diterima, itu akan mengembalikan hanya Jaket Musim Panas dan Jaket Musim Dingin
Saya pikir solusi berikut ini lebih baik
sumber
['eq' => $needle]
dapat ditambahkan untuk menemukan kecocokan yang tepat (atau lebih baik, gunakan solusi regex yang menemukan semua batas, tidak hanya spasi)