我不知道我是不是正确地拿着我的东西,但是我试图在表格页面中得到一个总数。我毫不怀疑有些东西我不知道,这是我尝试过的:
$labors = Labor::where('created_at', '>=', new DateTime('today'))->get()->sum('labor');
直到这里才有效:
->sum('labor')
然后我得到:
Call to undefined method Illuminate\Database\Eloquent\Collection::sum()
所以我显然使用它不正确,因为它在这里的文档中:
http://four.laravel.com/docs/queries
非常感谢一些反馈意见。 :)
我认为这可能实际上是相关的:
public function index()
{
$labors = Labor::where('created_at', '>=', new DateTime('today'))->sum('labor');
return View::make('labors.index', compact('labors'));
}
答案 0 :(得分:3)
你需要做两件事:
$labors = Labor::where('created_at', '>=', new DateTime('today'))->get();
以上获取数组以供foreach使用。
$laborTotal = Labor::where('created_at', '>=', new DateTime('today'))->sum('labor');
得到总数。那么你需要做的就是将它们都发送到视图中,只需使用表格页脚中的总数:
return View::make('labors.index', compact('labors', 'laborTotal'));
查看类似的内容:
@foreach ($labors as $labor)
<tr> ... </tr>
@endforeach
<tr><td>{{ $laborTotal }}</td></tr>
答案 1 :(得分:1)
如果你需要做一个foreach,你将不得不做两个查询:
$total = Labor::where('created_at', '>=', new DateTime('today'))->sum('labor');
$labors = Labor::where('created_at', '>=', new DateTime('today'))->get();
这是因为sum()返回一个带和的整数,而不是一个集合。
答案 2 :(得分:1)
很确定它应该是
$labors = Labor::where('created_at', '>=', new DateTime('today'))->sum('labor');
根据Eloquent Aggregates,您正在查看Fluent文档
你现在不需要compact
$ labors,因为它是一个字符串而不是一个数组