2017-11-02 12 views
1

入力がスペースで区切られた文字列で、各単語が異なる列に属するSQL検索文を作成するにはどうすればよいですか?例えばSQL区切り文字付き句

検索入力: 2011アウディQ7

年の "2011" を検索し、メイクのための

"アウディ" を検索し、

「Q7」はモデルを検索します

私は私のSQLテーブルのフィルタを作成するために、AJAXを使用していますが、ここで私が働いているコードだが、動作していない:

データベース

|year|make|model| 
---------------- 
|2017|Audi|Q7 
----- ---- ----- 
... | ...| ... 

PHP

public function categoryOptions() { 
    $term = $this->request->input('term'); 
    $options = VehiclesModel::where('year', 'like', '%'.$term.'%')->where('make', 'like', '%'.$term.'%')->where('model', 'like', '%'.$term.'%')->get(); 
    return $options->pluck('id','year','make','model'); 
} 

私は'%'.$term.'%'に区切り記号を使用する必要があるとは思いますが、その仕方はわかりません。

+2

SQL文を作成して作成する前に、その用語を関連する部分に分割する必要があります。スペースが区切られ、いつも正しい順番になるようにするには、 '$ terms = explode(" "、$ term);を実行し、' $ terms [0] 'と' $ terms [1] '。 – MCMXCII

答えて

0

Split $ termを' 'で割って、[0]に年を、[1]に[2]でモデルを作成します。 次のようなもの:

public function categoryOptions() { 
    $term = $this->request->input('term'); 
    $terms = explode(' ', $term); 
    $options = VehiclesModel::where('year', 'like', '%'.$terms[0].'%')->where('make', 'like', '%'.$terms[1].'%')->where('model', 'like', '%'.$terms[2].'%')->get(); 
    return $options->pluck('id','year','make','model'); 
} 
+0

ありがとう!それは正しい結果を返しましたが、私の応答は年とIDである{"2011":5}のみを表示しています – cvassios

+0

あなたの最後の声明が意味するものがわからない "返品後にモデルの場所も追加する必要があります。 " – cvassios

関連する問題