假設我們有一個以title
列命名的表Brands
,該列可以包含一些單詞的句子。選擇具有包含多個單詞句子(MySql)中的至少一個的列的行
現在我們有像「堆棧溢出網站」一句話,我們要選擇自己的標題欄包含的那個詞意味着堆棧或溢出或網站一個所有記錄。
我知道有LIKE
運營商爲類似的任務但我認爲它只適用於特定的單詞。
此外,我更喜歡使用一個查詢來做我想要的結果。
我感謝你如果可以幫助寫laravel雄辯的查詢。
假設我們有一個以title
列命名的表Brands
,該列可以包含一些單詞的句子。選擇具有包含多個單詞句子(MySql)中的至少一個的列的行
現在我們有像「堆棧溢出網站」一句話,我們要選擇自己的標題欄包含的那個詞意味着堆棧或溢出或網站一個所有記錄。
我知道有LIKE
運營商爲類似的任務但我認爲它只適用於特定的單詞。
此外,我更喜歡使用一個查詢來做我想要的結果。
我感謝你如果可以幫助寫laravel雄辯的查詢。
使用explode
功能,使它的話的數組。 whereIn
方法驗證給定列的值是否包含在給定數組中。 試試這個:
$querySentence = "stack overflow website";
//Using explode function, make it an array of WORDS
$wordsArray = explode(" ", $querySentence);
$dbQuery = Brands::whereIn('title', $wordsArray)->get();
希望這是有幫助的。
您可以通過執行多個相似的語句來完成此操作。像這樣:
SELECT * FROM TABLE WHERE info LIKE '%stack%' OR info LIKE '%overflow%' OR info LIKE '%website%';
請注意,這將不會很好地執行大型數據結構。如果你有一個龐大的數據庫,我會建議使用像ElasticSearch這樣的東西,但至少要仔細看看你的表的索引。
此查詢可以幫助 SELECT * FROM表WHERE COLUMN LIKE '%堆棧%' 或列LIKE '%溢出%' 或列LIKE '%的網站%'
簡單的答案。當使用LIKE
來實現它時,使用%
。像這樣:
Select * from brands where title LIKE '%stack%' OR title LIKE '%overflow%' OR title LIKE '%website%'
。
它選擇它所具有的字母。例如,如果你只是搜索STA,它返回堆棧,因爲它有STA的堆內的信件。
更新:口才
Brands::where('title', 'LIKE', '%stack%')->orWhere('title', 'LIKE', '%overflow%')->orWhere('title', 'LIKE', '%website%');
我認爲你應該從編寫原始MySQL查詢開始,這個嘗試你最好能在你的問題中告訴我們。 –
我想你想全文搜索 – rtfm
@ A.B.Developer檢查我的答案在下面。 –