سلام
لطفا به کدها توجه کنید
در class product
روی نمونه discountcalculator شما داردید متود discountedPrice($coupons->first() ,$price) را صدا میزنید وprice را پاس میدهید
class Product extends Model
public function getPriceAttribute($price)
{
$coupons = $this->category->validCoupons();
if ($coupons->isNotEmpty()){
$discountCalculator = resolve(DiscountCalculator::class);
return $discountCalculator->discountedPrice($coupons->first() ,$price);
}
return $price ;
اما در
class DiscountCalculator
public function discountedPrice(Coupon $coupon , int $amount)
{
dd($coupon)
return $amount - $this->discountAmount($coupon , $amount);
}
در این جا شما داریداز model Coupon یک نمونه جدید ایجاد میکنید و وقتی dd میگیرم این ارور را میدهد
Argument 1 passed to App\\Services\\Storage\\Cost\\DiscountCalculator::discountedPrice() must be an instance of App\\coupon, instance of Illuminate\\Database\\Eloquent\\Relations\\MorphMany given, called in D:\\Project_laravel\\BSA_Project\\blog\\app\\product.php on line 29 (View: D:\\Project_laravel\\BSA_Project\\blog\\resources\\views\\products\\basket.blade.php)
اما در صورتی که کد ام را به این شکل میزنم
public function discountedPrice($coupon , int $amount)
{
return $amount - $this->discountAmount($coupon , $amount);
}
public function discountAmount($coupon,int $amount)
{
$discountAmount=(int)(($coupon->percent/100)*$amount);
//dump($discountAmount);
return $this->isExceeded($discountAmount,$coupon->limit )?$coupon->limit:$discountAmount;
}
این خطا را میدهد
Undefined property: Illuminate\\Database\\Eloquent\\Relations\\MorphMany::$percent (View: D:\\Project_laravel\\BSA_Project\\blog\\resources\\views\\products\\basket.blade.php)
لطفا راهنمایی کنید