2017-10-04 103 views
0

我寫函數來想用戶表和產品表多表查詢多列,這裏是我怎麼想如何在laravel的單個查詢中從多個表中選擇多個列?

Route::post ('/search', function() { 
$q = Input::get ('q'); 
$user = DB::table('users')->where ('name', 'LIKE', '%' . $q . '%')->orWhere ('email', 'LIKE', '%' . $q . '%')->get(); 
if (count ($user) > 0) 
    return view ('welcome')->withDetails ($user)->withQuery ($q); 
else 
    return view ('welcome')->withMessage ('No Details found. Try to search again !'); 

這只是選擇多列,但只有一個表是用戶表,但我有另一個表是產品表和product_name列在那裏。所以我想把它包含在搜索查詢中。我應該使用哪種方法,聚合方法還是聯合方法?我嘗試了一些可能的方法,但沒有運氣。請指導我。謝謝。

+0

如果他們沒有任何關係,那麼工會就可以正常工作。 – Ohgodwhy

+0

是的,沒有關係 –

+0

由於' - > get()'返回一個集合,你可以執行一個完全獨立的查詢並在那裏合併那些集合。或者,您可以使用聯合或其他許多方法。 – Ohgodwhy

回答

0

這是一些東西。 (我假定一些點,你有ID爲1和產品用戶ID爲1)

1)聯盟的方法:

$users= \App\User::FindOrFail(1); 
$productsWithUsers = \App\Products::where(['id'=>1])->union($table1)->get(); 

現在$ productsWithUsers都從用戶和產品列

相關問題