Laravel eloquent Слишком мало аргументов для функции 1 и 2 ожидаемых в моем запросе - PullRequest
0 голосов
/ 03 февраля 2020

Вот мой код:

 $sum = $pipes->sum(function ($pipe) use ($filter) {
            $total = 0;
            $items = $pipe->items
                ->where('status', 'Terminé')
                ->where('closed', false)
                ->where(function ($qu) use ($filter) {
                    if ($filter === false) {
                        $qu->where('payment_id', 'exists', false)
                            ->where('closed', false)
                            ->where('locker', 'exists', false);
                    } else {
                        $qu->where('payment_id', 'exists', true)
                            ->where('closed', false)
                            ->where('locker', 'exists', false)
                            ->where('failed_to_pay', true);
                    }
                })->get();

            foreach ($items as $item) {
                $total = $total + ($item->price * $item->quantity);
            }

            return $total;
        });

Ошибка о строке ->get();

У кого-нибудь есть идеи для решения проблемы? Спасибо!

1 Ответ

2 голосов
/ 03 февраля 2020

я не знаю ->where(function ($qu) use ($filter)) об этом, где условие, но вы можете просто Попробовать это

  $sum = $pipes->sum(function ($pipe) use ($filter) {
            $total = 0;
            $itemsQ = $pipe->items
                ->where('status', 'Terminé')
                ->where('closed', false);

                if($filter == false) {
                   $items = $itemsQ->where('payment_id', 'exists', false)
                    ->where('closed', false)
                    ->where('locker', 'exists', false)->get();
                }else {
                    $items = $itemsQ->where('payment_id', 'exists', true)
                    ->where('closed', false)
                    ->where('locker', 'exists', false)
                    ->where('failed_to_pay', true)->get();

                }

            foreach ($items as $item) {
                $total = $total + ($item->price * $item->quantity);
            }

            return $total;
        });

не добавляйте столько аргументов в функцию where(), скорее создайте экземпляр items и добавить запрос на основе условия

...