0

舌を正しく持っていないのかどうかはわかりませんが、テーブルのフッターで合計を取得しようとしています。私が見逃しているものがあることは間違いありません。これが私が試したことです:

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

3 に答える 3

1

foreach を実行する必要がある場合は、次の 2 つのクエリを実行する必要があります。

$total = Labor::where('created_at', '>=', new DateTime('today'))->sum('labor');

$labors = Labor::where('created_at', '>=', new DateTime('today'))->get();

これは、 sum() がコレクションではなく、合計で整数を返すためです。

于 2013-10-09T21:00:56.883 に答える
1

きっとそうなるはず

$labors = Labor::where('created_at', '>=', new DateTime('today'))->sum('labor');

これは、Fluent docs を見ていたEloquent Aggregatesによるものです。

compact配列ではなく文字列であるため、今は $laborsする必要はありません

于 2013-10-09T21:01:09.530 に答える