راکت
حل شده

خطای SQLSTATE 2300: در لاراول

3 پاسخ

سلام دوستان خسته نباشید
من رابطه ای چند به چند بین محصولات و دسته بندی اونها دارم میخام کاربر وقتی روی دسته بندی مورد نظر کلیک کرد بره و محصولات اون دسته بندی را نشونش بده تابعی که برای این کار استفاده میکنم به شکل زیر هست

public function category_products(Category $category)
    {
        $products = Product::with('photos')->whereHas('categories', function($q) use($category){
            $q->where('id', $category->id);
          })->paginate(3);
          dd($products);
        return view('front.product.category_products',compact('category'));
    }

اما وقتی دی دی میکنم محصولات رو با خطای

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous

مواجه میشم و نمیتونم محصولات دسته بندی رو به ویو خودم بفرستم..ممنون میشم راهنمایی کنید کجای کدم اشتباهه؟

ثبت پرسش جدید

پاسخ‌ها

3
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

معنای پیغام خطا این هست که ستون id که بهش رفرنس دادید مبهم و دوپهلوست. علتش هم اینه که نمی‌تونه متوجه بشه منظورتون id جدول products هست یا categories.

راه حل ساده اش جایگزین کردن کوئری زیر هست:

$products = Product::query()
    ->with('photos')
    ->whereHas('categories', function($q) use($category){
        $q->where('products.id', $category->id);
    })->paginate(3);
محمد میرزاخانی
محمد میرزاخانی
@mirzamohammad.com

تشکر فقط به جای products.id باید categories.id میزاشتید

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

حق با شماست 👌

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام