如何在laravel中的单个查询中从多个表中选择多个列?

时间:2017-10-04 17:51:08

标签: php mysql sql database 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列就在那里。所以我想将它包含在搜索查询中。我应该使用哪种方法,聚合方法或联合方法?我尝试了一些可能的方法,但还没有运气。请指导我。谢谢。

1 个答案:

答案 0 :(得分:0)

这是件事。 (我假设了一些要点,因为你有id为1的用户和id为1的产品)

1)联盟方法:

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

现在$ productsWithUsers拥有User和Product

中的所有列