محمد میرزاخانی
2 سال پیش توسط محمد میرزاخانی مطرح شد
3 پاسخ

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

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

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

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


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 2 سال پیش مطرح شد
1

معنای پیغام خطا این هست که ستون 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 2 سال پیش مطرح شد
0

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


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 2 سال پیش مطرح شد
0

حق با شماست 👌


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

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