Merhaba,

2 adet tablom var;

product_orders ve product_orders_cart adında.

Sipariş geldiği zaman kullanıcı bilgisi ve diğer bilgiler kayıt ediliyor.

Satın aldığı ürünler product_orders_cart tablosuna kaydediliyor.

Kullanıcı birden fazla ürün sipariş verebilir. Sipariş verdiği ürünler de parça parça teslim ediliyor.


Listeleme sayfasında
@if(count($payout->getCart) == $payout->getCart->sum('delivery_status'))
                                          <i class="fas fa-circle text-success"></i><small class="text-secondary"> Teslim Edildi</small>
                                      @else
                                          <i class="fas fa-circle text-danger"></i><small class="text-secondary"> Teslimat Bekliyor</small>
                                      @endif
bu şekilde gösterebiliyorum.

Ama filtreleme kısmını yapamadım.

filter kullanarak yapabilirim ama pagination kısmı sorun çıkartacak.

Veritabanı sorgusu olarak nasıl yapabilirim?

Model ProductOrders:
<?php

namespace App\Models\Shop;

use App\Models\members\Member;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use \App\Models\Shop\ProductOrdersCart;
use Carbon\Carbon;

class ProductOrders extends Model
{
    use HasFactory;
    protected $table  = 'product_orders';
    public function getCart(){
        return $this->hasMany(ProductOrdersCart::class, 'order_id','order_id');
    }


    public function scopeFilter($query, $dateFrom, $dateTo, $status)
    {    
        if (!empty($status)) {
            switch($status) {
                case 'pending':

                    break;
                case 'completed':
                    $query->where('status', '1');

                    break;
                case 'failed':
                    $query->where('status', '0');
                    break;
            }

        }


        return $query;
    }
 
}
Controller:
        $payouts = ProductOrders::where('status',1)->orderBy('created_at','desc');
        $payouts->filter($request->input('from_date'), $request->input('to_date'),$request->input('status'));
        $payouts = $payouts->paginate(50);