2016-11-24 4 views
2

複数のモデルを検索しようとしています。私はルートとHTMLフォームを設定して、私のコントローラーでデータを正常に受信しています。さて、私は複数の列を照会し、結果を雄弁または配列として取得したいと思います。Laravelで検索

これを達成する適切な方法は何ですか?

public function search(Request $request) { 
    $searchTerm = $request->search; 

    // I want to search.. 
    Content::where('value', '%' . $searchTerm . '%')->get(); 
    BlogPost::where('value', '%' . $searchTerm . '%')->get(); 
    // etc.. 
} 
+0

あなたはこの行 '$ SEARCHTERM = $要求 - >検索のセミコロン終わりを追加することができます。' ? –

答えて

2

まず、likeをクエリに追加します。あなたは配列をしたい場合はその後、結果をマージするtoArray()方法とarray_merge()を使用します。

$result1 = Content::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray(); 
$result2 = BlogPost::where('value', 'like', '%'.$searchTerm.'%')->get()->toArray(); 
$result = array_merge($result1, $result2); 

コレクションを取得したい場合は、単にデータを取得し、merge()ヘルパーとそれをマージします。

+0

ありがとうございました。質問があります。私は '{{$ result}} 'を使ってみましたが、この方法では取得できません。それを達成する正しい方法は何ですか?また、 'array_merge()'の代わりに 'merge()'を使うと、 '未定義関数App \ Http \ Controllers \ merge() 'を呼び出します。 – senty

+1

@ここでは' $ result is'は配列またはコレクションです。 'foreach($ result as $ oneRow)'で反復処理し、ループ内のデータを '{{$ oneRow-> value}}'で取得します。ビューに '{{dd($ result)}}'を入れて '$ result'の構造体を見ることができます。 –

0

結果を変数に入れるだけですか?

public function search(Request $request) { 
    $searchTerm = $request->search 

    // I want to search.. 
    $contents = Content::where('column', '%' . $searchTerm . '%')->get(); 
    $blogs = BlogPost::where('column', '%' . $searchTerm . '%')->get(); 
    // etc.. 
} 
+0

@何か別の質問がありますか?私は異なる列と値しか見ませんでした。 –