我在mysql Payments、CreditCardPayment、WireTransfer中设计了3个表。付款表有一列 payment_mode 存储所使用的付款方式(信用卡或 Paypal )。在 CreditCardPayment 和 WireTransfer 中,我存储付款表中的付款 ID。
现在如何从付款表中获取具有付款模式的所有付款(来自信用卡或 PayPal 表的详细信息)?
最佳答案
您必须对 Payment 实体和其他实体(CreditCardPayment、WireTransfer)进行多态关系。
添加付款迁移以添加这些列:
- payment_type(字符串)
- paymentable_id(整数)
在 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');
}
注意:“付款”方法中的“付款”是您的付款实体类。
关于mysql - Laravel Eloquent 选择查询所使用的付款方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50783486/