Asked May 21st, 2:21 AM 140 0 3
  • 140 0 3
+1

Query model sử dụng WhereLike

Share
  • 140 0 3

Hiện nay em đang thực hiện một chức năng search sử dụng whereLike. Hiện nay trong DB dữ liệu cột name được lưu là "Street#<số>". Khi em sử dụng câu query như sau:

$name = 'Street#3';

$street = Street::where('name', 'LIKE', "%{$name}%")->get();

Kết quả hiện nay đang trả về là toàn bộ bàn ghi của Model Street thay vì chỉ các bản ghi có liên quan tới name là 'Street#3'. Em đã thử remove '#' nhưng kết quả không được như mong đợi lắm.

May 21st, 2:26 AM

Bật debugbar xem query đang như thế nào em. Liệu có bị cache query không ?

0
| Reply
Share
May 21st, 2:33 AM

MySQL hả em?

0
| Reply
Share

3 ANSWERS


Answered May 21st, 2:51 AM
Accepted
+2

Bạn thử

$name = 'Street\#3';
Share
May 21st, 2:53 AM

Cảm ơn anh nhiều 👍

0
| Reply
Share
Nguyễn Ngọc @doangiau2006
May 22nd, 10:40 AM
Nguyễn Ngọc @doangiau2006
May 22nd, 10:43 AM
Answered May 21st, 2:39 AM
0

Mình thấy thì cách bạn query không có vấn đề gì.

Mình có thể gợi ý một hướng để bạn gỡ lỗi: thử xem đoạn code trên trả về SQL thế nào:

$query = Street::where('name', 'LIKE', "%{$name}%");
$query->toSql(); // lấy câu lệnh sql
$query->getBindings(); // lấy các param

Sau đó nếu thấy câu query bằng SQL vẫn chính xác, hãy thử execute trực tiếp câu query SQL đó (bằng CLI của mysql hay psql) và kiểm tra kết quả trả về.

Share
Answered May 21st, 2:45 AM
0

Cái $name em thử đổi lại thành số thôi.

Sẽ là 5 thay vì Street#5. Sau đó thì thử như này xem được không:

$street = Street::where('name', 'LIKE', "Street#%{$name}%")->get();
Share
May 21st, 2:52 AM

@huukimit Yêu cầu người ta muốn search toàn bộ, chứ k chỉ đơn thuần là số ạ 😦

0
| Reply
Share