簡體   English   中英

我想獲取名稱中帶有單詞,標簽之一或類別的所有圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM