Query model sử dụng WhereLike
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.
3 CÂU TRẢ LỜI
Cảm ơn anh nhiều
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ề.
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();
@huukimit Yêu cầu người ta muốn search toàn bộ, chứ k chỉ đơn thuần là số ạ
Bật debugbar xem query đang như thế nào em. Liệu có bị cache query không ?
MySQL hả em?