2017-10-04 68 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都从用户和产品列

相关问题