سلام و عرض ادب
طبق ویدئو که پیش میرم وقتی که میخوام orderی که به payment متصله رو آپدیت کنم به این خطا میخورم.
BadMethodCallException Call to undefined method App\\Models\\Payment::order()
متد callback توی کنترلر PaymentController:
public function callback(Request $request)
{
$paymentInfo = $request->all();
$idPayVerifyRequest = new IDPayVerifyRequest([
'orderId' => $paymentInfo['order_id'],
'id' => $paymentInfo['id'],
'apiKey' => config('services.gateways.idpay.api_key'),
]);
$paymentService = new PaymentService(PaymentService::IDPAY, $idPayVerifyRequest);
$result = $paymentService->verify();
if (!$result['status']) {
return redirect()->route('home.checkout')->with('failed', 'خطا در پرداخت.');
}
if ($result['statusCode'] == 101) {
return redirect()->route('home.checkout')->with('failed', 'پرداخت شما قبلا انجام شده است و نیازی به پرداخت مجدد نیست. فایلهای مربوطه به ایمیل شما ارسال شده است.');
}
$currentPayment = Payment::where('ref_code',$result['data']['order_id'])->first();
$currentPayment->update([
'status' =>'paid',
'res_id'=>$result['data']['track_id'],
]);
$currentPayment->order()->update([
'status' =>'paid'
]);
}
}
کلاس Payment:
class Payment extends Model
{
use HasFactory;
protected $guarded = [];
}
کلاس Order:
class Order extends Model
{
use HasFactory;
protected $guarded = [];
public function user()
{
return $this->belongsTo(User::class);
}
public function payment()
{
return $this->hasOne(Payment::class);
}
public function orderItems()
{
return $this->hasMany(OrderItem::class);
}
}
البته متد order رو به این صورت به مدل Payment هم اضافه کردم:
class Payment extends Model
{
use HasFactory;
protected $guarded = [];
public function order()
{
return $this->hasOne(Order::class);
}
}
ولی این خطا رو میگیرم:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'orders.payment_id' in 'where clause' (SQL: update `orders` set `status` = paid, `orders`.`updated_at` = 2021-12-28 15:20:33 where `orders`.`payment_id` = 16 and `orders`.`payment_id` is not null)
چون که اصلا توی جدول orders ما payment_id نداریم.
تمام مراحل رو قدم به قدم طبق ویدیو پیش رفتم. ولی نمیدونم ایراد کار کجاست