cari

Rumah  >  Soal Jawab  >  teks badan

Kaedah untuk mencari tarikh luput transaksi dalam jadual berkaitan

Saya mempunyai jadual taksonomi dengan kategori transaksi yang berbeza. Setiap kategori mengandungi beberapa urus niaga bersama dengan tarikh luputnya. Saya hanya mahu mengakses urus niaga tersebut dan kategorinya yang tarikh tamat tempohnya masih belum tamat, tetapi saya menghadapi isu di mana jika urus niaga kategori tertentu wujud dalam julat masa, maka semua urus niaga akan tiba tanpa mengira sama ada transaksi tersebut telah tamat tempoh. atau tidak. Ini kod saya:

$deals = DealCategory::where('name', '!=', '今日交易')
        ->whereRelation('deals','start_date', '<=', date('Y-m-d'))
        ->whereRelation('deals', 'expiry_date',">=", date('Y-m-d'))
        ->with('deals', 'deals.deal_images', 'deals.deal_products', 'deals.deal_products.product', 'deals.rating')->latest()->Paginate(12);
        return response()->json(['Deals' => $deals, 'Date' => Carbon::now(), 'status' => 'success'], 200);

P粉752812853P粉752812853438 hari yang lalu610

membalas semua(1)saya akan balas

  • P粉042455250

    P粉0424552502023-09-14 13:55:18

    Apabila anda menggunakan with untuk memuatkan perhubungan, anda boleh melepasi syarat tambahan untuk memberitahu Eloquent rekod yang hendak dimuatkan:

    DealCategory::where('name', '!=', 'Today Deal')
      ->whereRelation('deals','start_date', '<=', date('Y-m-d'))
      ->whereRelation('deals', 'expiry_date',">=", date('Y-m-d'))
      ->with(['deals' => function ($query) {
        $query->where('start_date', '<=', date('Y-m-d'));
        $query->where('expiry_date',">=", date('Y-m-d'));
        $query->with('deal_images', 'deal_products', 'deal_products.product', 'rating');
      }])
    ->latest()->Paginate(12);

    Versi terkini Laravel malah termasuk kaedah withWhereHas khusus yang menyemak kewujudan perhubungan sambil memuatkan perhubungan secara serentak, memuatkan berdasarkan syarat yang sama:

    DealCategory::where('name', '!=', 'Today Deal')
      ->withWhereHas('deals', function ($query) {
        $query->where('start_date', '<=', date('Y-m-d'));
        $query->where('expiry_date',">=", date('Y-m-d'));
        $query->with('deal_images', 'deal_products', 'deal_products.product', 'rating');
      })
    ->latest()->Paginate(12);

    Sebarang pilihan boleh memenuhi keperluan anda.

    balas
    0
  • Batalbalas