[英]I want to get all images which either have a word in their name, as one of their tags or as category
我正在嘗試將搜索功能添加到我的網站,並且一直在修改需要執行的雄辯查詢。 目前,我已經進行了3個查詢,每個查詢都獲得了滿足特定條件的圖像,但是,我不確定如何將其組合為1個查詢,以吐出所有符合一個,兩個或所有條件的圖像。
$images = Image::where('name', 'like', '%'.$query.'%')->get();
該查詢將獲取名稱與所搜索單詞相似的所有圖像。
$images = Image::whereHas('tags', function($q) use ($query) {
return $q->where('name', 'like', '%'.$query.'%');
})->orderBy('created_at', 'desc')->get();
該查詢將獲取所有具有與所搜索單詞相似的標簽的圖像。
$images = Image::whereHas('category', function($q) use ($query) {
return $q->where('name', 'like', '%'.$query.'%');
})->orderBy('created_at', 'desc')->get();
最后,此查詢將獲得所有類別與所搜索單詞相似的圖像。
public function search($query){
$images = Image::where('name', 'like', '%'.$query.'%')->get();
$images = Image::whereHas('tags', function($q) use ($query) {
return $q->where('name', 'like', '%'.$query.'%');
})->orderBy('created_at', 'desc')->get();
$images = Image::whereHas('category', function($q) use ($query) {
return $q->where('name', 'like', '%'.$query.'%');
})->orderBy('created_at', 'desc')->get();
return view('search', ['images' => $images]);
}
這是創建搜索功能的正確方法嗎? 我可以做些什么來進一步增強它? 我個人可能會監督一些明顯的問題嗎? 我會感激任何提示和技巧,因為我認為搜索功能對像我這樣的CRUD應用程序很重要。
將約束合並到單個查詢中:
$images = Image::where('name', 'like', '%'.$query.'%')
->orWhereHas('tags', function($q) use ($query) {
return $q->where('name', 'like', '%'.$query.'%');
})->orWhereHas('category', function($q) use ($query) {
return $q->where('name', 'like', '%'.$query.'%');
})->latest()
->get();
orderBy('created_at', 'desc')
latest()
等效於orderBy('created_at', 'desc')
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.