首页 > 解决方案 > 从 Laravel 连接查询中选择同一个表中的多个列是否有更短的方法?

问题描述

我正在使用 Laravel 8 和 PHP 7.3 并有这个 Laravel 查询:

$data = DB::table('mytable')
->join('myothertable', 'mytable.id', '=', 'myothertable.mytable_id')
->select(
    'mytable.id',
    'mytable.column1',
    'mytable.another_column',
    'mytable.created_at',
    'myothertable.id'
)
->get();

正如您在 select 语句中看到的那样,重复选择了其中 4 个列的表名('mytable'),我想知道是否有任何较短的可能形式,如我正在寻找的这种形式:

$data = DB::table('mytable')
->join('myothertable', 'mytable.id', '=', 'myothertable.mytable_id')
->select(
    'mytable{id,column1,another_column,created_at}',
    'myothertable.id'
)
->get();

注意 :) 我从这里抢走了查询。

标签: laravelselectlaravel-query-builder

解决方案


您可以做的是自己进行查询,而不是使用内置函数。查询看起来像这样:

DB::select('SELECT id, column1, another_column, created_at FROM TABLE1 
JOIN (SELECT id from myothertable) AS TABLE2 on mytable.id = TABLE2.id')

不确定这是否是您正在寻找的,但它是加入数据的另一种方式 =)


推荐阅读