查询生成器中的Laravel 5 multiple select()
在laravel 5.1中,我想做查询生成器中的Laravel 5 multiple select(),laravel,laravel-5,laravel-5.1,Laravel,Laravel 5,Laravel 5.1,在laravel 5.1中,我想做 $myTable = MyTable->select('firstField'); if ($somethingTrue) { $myTable->select('secondField'); } $myTable->get(); 我希望同时选择firstField和secondField。 当然,上面的代码不起作用,即最后只选择第二个字段。 查询生成器类提供的函数是否可以完全满足我的要求?是的,您可以使用addSelect(
$myTable = MyTable->select('firstField');
if ($somethingTrue) {
$myTable->select('secondField');
}
$myTable->get();
我希望同时选择firstField和secondField。当然,上面的代码不起作用,即最后只选择第二个字段。
查询生成器类提供的函数是否可以完全满足我的要求?是的,您可以使用
addSelect()
从:
如果已有查询生成器实例,并且希望将列添加到其现有select子句中,则可以使用addSelect方法:
此外,(与书面文档一致)还可以进一步说明核心类上可用的函数 接受的答案可能更优雅,但您也可以为select子句使用字段数组
$fields = ['firstField'];
if ($someCondition) {
$fields[] = 'secondField';
}
$result = DB::table('users')->select($fields)->get();
mwallisch的答案比公认的答案要好,因为如果您在多个位置定义选择,那么
addSelect
将不起作用
例如,以下代码将抛出错误:
$myTable = MyTable->select('firstField');
if ($somethingTrue) {
$myTable->addSelect('secondField');
}
if ($somethingElseTrue) {
$myTable->addSelect('thirdField');
}
$myTable->get();
而这可以通过以下方式实现:
$fields = ['firstField'];
if ($somethingTrue) {
$fields[] = 'secondField';
}
if ($somethingElseTrue) {
$fields[] = 'thirdField';
}
$result = DB::table('users')->select($fields)->get();
$fields = ['firstField'];
if ($somethingTrue) {
$fields[] = 'secondField';
}
if ($somethingElseTrue) {
$fields[] = 'thirdField';
}
$result = DB::table('users')->select($fields)->get();