مشکل اجرای کد تخفیف در لاراول

سلام من با استفاده از  آموزش های سایت روکسو، کد تخفیف رو نوشتم ولی مشکلی که وجود داره اینه که کوئری میره از بین تمام کاربران چک میکنه اگر کاربر دیگه ای کد تخفیف رو استفاده کرده باشه پیغام منقضی شده رو میده

 

$check = Auth::user()->whereHas('coupons', function ($q) use ($request) {
    $q->where('code', $request->code)->where('status',1);
});
if (!$check) {
    $coupon = Coupon::where('code', $request->code)->first();

}
برچسب ها:
پرسیده شده در: 2 سال قبل
آمار بازدید: 630
Atris314 (322)
دارای ۲۰۰ کارما دارای ۲۰۰ کارما
1

سلام، این تکه کدی که نمایش دادید در متغییر check$ مقداری ذخیره می شود که معادل عبارت زیر است:

Auth::user()

کاربری که در حال حاضر به سایت ورود کرده را پیدا کن

->whereHas('coupons', function ($q) use ($request) {
    $q->where('code', $request->code)->where('status',1);
})

 سپس برو داخل رابطه ای که این کاربر با جدول copouns دارد بررسی انجام بده (منظور جدول میانی coupon_user هست) و اگر این کد برای این کاربر در این جدول ثبت شده بود آن را داخل متغییر check بریز.»

if (!$check) {}

اگر کاربر کد تخفیف را استفاده نکرده بود آنگاه کد تخفیف موردنظر را از جدول coupons پیدا کن.

مشکلی در این قطعه کد وجود ندارد و شاید شما برداشت درستی نداشتید.

ارسال شده در: 2 سال قبل
masoudsalehi (1725)
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو دارای 1000 کارما دارای 1000 کارما نظرات دریافتی:‌ بیش از 50 نظرات دریافتی:‌ بیش از 50 دارای 25 پاسخ صحیح دارای 25 پاسخ صحیح ارسال کننده پاسخ با 25 رای ارسال کننده پاسخ با 25 رای
0

کاملا متوجه کد شدم ولی برای من جواب نداد به این صورت نوشتم تا به صورت صحیح کار کرد:

$coupon = Coupon::where('code', $request->code)->first();
$check = Auth::user()->whereHas('coupons', function ($q) use ($coupon, $users) {
    $q->where('coupon_id', $coupon->id)
        ->where('status', 1)->where('user_id', $users->id);
})->exists();
ارسال شده در: 2 سال قبل
Atris314 (322)
دارای ۲۰۰ کارما دارای ۲۰۰ کارما
جهت ارسال پاسخ ابتدا عضو سایت شوید.