Rumah > Soal Jawab > teks badan
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粉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.