Hiiiii anh, em làm tính n?ng tìm ki?m t? 1 table có tên là items, em mu?n l?y ra nh?ng b?n ghi có status là publish, và title ho?c other_title có ch?a $keyword, s?p x?p theo c?t updated_subitems desc, và l?y ra t?i ?a 12 b?n ghi nh?ng ra k?t qu? ch?a ?úng l?m, anh xem giúp em v?i ?. Em dùng eloquent c?a Laravel:
$data = Item::where(‘status’, ‘publish’)->where(‘title’, ‘like’, “%{$keyword}%”)->orWhere(‘other_title’, ‘like’, “%{$keyword}%”)->orderBy(‘updated_subitems’, ‘DESC’)->limit(12)->get();
Câu truy v?n Eloquent mà em ??a ra có v?n ?? v? cách s? d?ng orWhere
. Khi em s? d?ng orWhere
sau các ?i?u ki?n where
, nó có th? gây ra s? k?t h?p không mong mu?n c?a các ?i?u ki?n. ?i?u này là do orWhere
không t? ??ng nhóm các ?i?u ki?n l?i v?i nhau b?ng d?u ngo?c ??n.
?? s?a l?i này, e c?n s? d?ng các nhóm ?i?u ki?n b?ng cách s? d?ng closure. ?i?u này ??m b?o r?ng các ?i?u ki?n where
???c nhóm l?i m?t cách chính xác. D??i ?ây là cách s?a l?i câu truy v?n:
$data = Item::where('status', 'publish')
->where(function ($query) use ($keyword) {
$query->where('title', 'like', "%{$keyword}%")
->orWhere('other_title', 'like', "%{$keyword}%");
})
->orderBy('updated_subitems', 'DESC')
->limit(12)
->get();