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>
@endifbu ş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);