Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengira jumlah dua lajur dan bilangan hubungan yang berkaitan dalam laravel?

Saya ada dua meja: pembeli dan pesanan. Pembeli mempunyai banyak pesanan.

Saya mahukan jumlah semua pembeli dan bilangan pesanan serta dua lajur pesanan (harga, yuran) dalam tempoh masa tertentu. Saya boleh mendapatkan kiraan dengan melakukan perkara berikut,

Buyer::withCount([
    'orders' => fn ($query) => $query
        ->where('created_at', '>=', $dateTo)
])
->get();

Tetapi bagaimana untuk mendapatkan jumlah (->where('created_at', '>=', $dateTo)) bagi tempoh masa tertentu?

P粉788571316P粉788571316215 hari yang lalu436

membalas semua(2)saya akan balas

  • P粉567112391
  • P粉189606269

    P粉1896062692024-02-22 00:03:31

    Untuk menggunakan pembolehubah di dalam penutupan, anda perlu menggunakan use() untuk menghantar nilainya kepada fungsi.

    Untuk menggunakan withSum({relation},{column}) anda perlu membuat panggilan berasingan untuk setiap satu.

    Buyer::withCount([
            'orders' => function ($query) use ($dateTo) { 
                $query->where('created_at', '>=', $dateTo);
            }
        ])
        ->withSum([
            'orders' => function ($query) use ($dateTo) { 
                $query->where('created_at', '>=', $dateTo);
            }
        ], 'price')
        ->withSum([
            'orders' => function ($query) use ($dateTo) { 
                $query->where('created_at', '>=', $dateTo);
            }
        ], 'charge')
        ->get();

    withSum() Hanya tersedia dalam Laravel versi 8 atau lebih tinggi.

    EditSintaks Fungsi Anak Panah

    Buyer::withCount([
            'orders' => fn ($query) $query->where('created_at', '>=', $dateTo),
        ])
        ->withSum(['orders' => fn ($query) $query->where('created_at', '>=', $dateTo)], 'price')
        ->withSum(['orders' => fn ($query) $query->where('created_at', '>=', $dateTo)], 'charge')
        ->get();

    balas
    0
  • Batalbalas