我在 mysql Payments、CreditCardPayment、WireTransfer 中设计了 3 个表。付款表有列 payment_mode 存储使用的付款方式(信用卡或贝宝)。在 CreditCardPayment & WireTransfer 中,我存储了付款表中的付款 ID。
现在我如何使用付款模式从付款表中获取所有付款(来自信用卡或贝宝表的详细信息)?
我在 mysql Payments、CreditCardPayment、WireTransfer 中设计了 3 个表。付款表有列 payment_mode 存储使用的付款方式(信用卡或贝宝)。在 CreditCardPayment & WireTransfer 中,我存储了付款表中的付款 ID。
现在我如何使用付款模式从付款表中获取所有付款(来自信用卡或贝宝表的详细信息)?
您必须对支付实体和其他实体(CreditCardPayment、WireTransfer)进行多态关系。
为 Payment 添加迁移以添加这些列:
在 Payment.php(实体)中,您应该添加此函数:
public function paymentable() {
return $this->morphTo();
}
在 CreditCardPayment.php 你应该添加这个函数:
public function payments(){
return $this->morphMany(Payment::class, 'paymentable');
}
在 WireTransfer.php 你应该添加这个函数:
public function payments(){
return $this->morphMany(Payment::class, 'paymentable');
}
注意:“付款”方法中的“付款”是您的付款实体类。