【发布时间】:2019-03-05 14:55:34
【问题描述】:
我可能遗漏了一些极其微不足道的东西,但是在抓取集合而不是返回整个项目的字段时,是否可以从模型中检索特定的列/字段?
这是我的查询:
$items = Items::where('visible', true)->take(10)->get();
这显然会完整返回每个项目,包括唯一 id 和其他我不想获取的字段...如何优化此查询以仅从模型中选择特定字段?
【问题讨论】:
我可能遗漏了一些极其微不足道的东西,但是在抓取集合而不是返回整个项目的字段时,是否可以从模型中检索特定的列/字段?
这是我的查询:
$items = Items::where('visible', true)->take(10)->get();
这显然会完整返回每个项目,包括唯一 id 和其他我不想获取的字段...如何优化此查询以仅从模型中选择特定字段?
【问题讨论】:
Laravel Query Builder get() 函数接收您需要获取的列数组。
$items = Items::where('visible', true)->take(10)->get(['column_1', 'column_2']);
【讨论】:
使用select() 方法来做到这一点:
$items = Items::select(['column_1', 'column_2']'])->where('visible', true)->take(10)->get();
【讨论】:
Laravel 查询构建器为编写此类查询提供了极大的灵活性。 您可以使用 select()、get()、all() 方法。
Items::where('visible', true)->take(10)->get('col_1', 'col_2');
或
Items::select('col_1', 'col_2')->where('visible', true)->take(10)->get();
Items::select(['col_1', 'col_2'])->where('visible', true)->take(10)->get();
【讨论】: