🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ امید غلامی
اعمال کد تخفیف در صورتی که رابطه بین محصول و دسته بندی چند به چند باشد به چه صورت است؟
جامعه لاراول ایجاد شده در ۱۶ مرداد ۱۳۹۹

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

class Product extends Model
{
    public function categories()
    {
        return $this->belongsToMany(Category::class);
    }
    public function getPriceAttribute($price)
    {
        $categories=$this->categories;
        $coupons =collect(new Coupon);
        foreach($categoriesas $category){
            $coupons->add($category->validCoupons());
        }
        if ($coupons->isNotEmpty()){
            $discountCalculator = resolve(DiscountCalculator::class);
            return $discountCalculator->discountedPrice($coupons->first() ,$price);
        }
        return $price ;
    }
    }

تنها قسمتی که تغییر دادم همین accessor هست. اما با این خطا مواجه میشم:
 

Argument 1 passed to App\Support\Discount\DiscountCalculator::discountedPrice() must be an instance of App\Coupon, instance of Illuminate\Database\Eloquent\Collection given

 

سلام ... 

اون متد نیازمند مدل Coupon هستش .. در حالی که شما دارید بهش یک کالکشن پاس میدید .. 

موضوع دیگه اینکه Coupon شما یک مدل است نیازی نیست که شما با استفاده از first() اون رو به discount پاس بدید.

مهرداد سامی ۱۹ مرداد ۱۳۹۹، ۱۱:۵۶