Laravel 4在桌面页面中总计

时间:2013-10-09 20:29:58

标签: php laravel laravel-4 eloquent

我不知道我是不是正确地拿着我的东西,但是我试图在表格页面中得到一个总数。我毫不怀疑有些东西我不知道,这是我尝试过的:

$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'));
}

3 个答案:

答案 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,因为它是一个字符串而不是一个数组