Laravel - Как получить СУММУ столбца отдельного продукта? - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь что-то сделать в Laravel, и у меня очень сильно не получается. Может ли кто-нибудь помочь мне с этим?

Это то, что я пытаюсь:

Данные, которые у меня есть

Name - Quantity

Water:10
Water:20
Cola:5
Cola:10

Результаты, которые я хочу в виде

Water:30
Cola:15

Это то, что у меня пока

Контроллер:

public function total()
    {
        $orders = Order::latest('order_id')->get();
        $products = Product::distinct()->get('name'); 

        return view('home.total')->with('orders', $orders)->with('products', $products);
    }

Просмотр:

    <div class="row justify-content-center">
        @forelse ($products as $product)
            <div class="col-md-3">
                <div class="card">
                <div class="card-header">{{$product->name}}</div>
                    <div class="card-body">
                        {{$product->sum('quantity')}}
                    </div>
                </div>
            </div>
            @empty
        @endforelse
    </div>

Это приводит к тому, что продукты различаются, но количество представляет собой СУММУ всех количеств всех продуктов, а не каждого продукта.

Может кто-нибудь, пожалуйста, помогите мне с этим?

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вы можете использовать это

$result = DB::select('SELECT sum(Quantity), name FROM products GROUP BY name');
0 голосов
/ 05 мая 2020

Вы можете создать продукт group by.

$products = App\Product::groupBy('name')
    ->select(\DB::raw("SUM(`quantity`) AS `quantity_sum`"), 'name')
    ->get();

Он должен дать вам желаемый результат с набором строк, содержащих поля name и quantity_sum.

Это должен вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...