如何在laravel的单个查询中从多个表中选择多个列?
问题描述:
我写函数来想用户表和产品表多表查询多列,这里是我怎么想如何在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列在那里。所以我想把它包含在搜索查询中。我应该使用哪种方法,聚合方法还是联合方法?我尝试了一些可能的方法,但没有运气。请指导我。谢谢。
答
这是一些东西。 (我假定一些点,你有ID为1和产品用户ID为1)
1)联盟的方法:
$users= \App\User::FindOrFail(1);
$productsWithUsers = \App\Products::where(['id'=>1])->union($table1)->get();
现在$ productsWithUsers都从用户和产品列
如果他们没有任何关系,那么工会就可以正常工作。 – Ohgodwhy
是的,没有关系 –
由于' - > get()'返回一个集合,你可以执行一个完全独立的查询并在那里合并那些集合。或者,您可以使用联合或其他许多方法。 – Ohgodwhy