我意识到我的“贷款”表上的“ interest_amount”是多值属性。所以我应该只创建一个表来拆分“贷款”表还是应该创建一个不同的模型?我需要不同的“利息”表,因为我必须将每个月的利息标记为已付/未付。
我创建了一个新模型“ InterestAmount”和表“ interest_amounts”,一旦插入“贷款”,该表必须自动插入。
Loan('id','amount','interest_rate')
InterestAmounts('id','loan_id','interest_amount')
这里,interest_amount是使用'amount'和 '利益'。并且表interestamount中的数据必须自动插入。
我需要使用事件和侦听器进行自动输入吗?
答案 0 :(得分:1)
在Laravel中,这可以通过使用一对多关系来解决。在这里,您的一笔贷款有多个InterestAmounts。
因此,您必须定义两个模型
一个是Loan
模型:
class Loan extends Model
{
protected $table = 'Loan';
public function interestAmounts()
{
return $this->hasMany(InterestAmount::class, 'loan_id');
}
}
另一个是InterestAmount
模型:
class InterestAmount extends()
{
protected $table = 'InterestAmounts';
public function loan()
{
return $this->belongsTo(Loan::class, 'loan_id');
}
}
现在,如果要在插入贷款并进行正确计算后插入InterestAmounts
,则可以执行以下操作:
要创建贷款:
$loan = Loan::create([
'amount' => $amountValue,
'interest_rate => $interestRateValue,
]);
要通过正确的计算添加InterestAmounts
:
$loan->interestAmounts()->create([
'interest_amount' => $loan->amount * $loan->intrest_rate,
]);
此处,loan_id
将自动添加。您甚至可以手动进行操作:
InterestAmount::crate([
'loan_id' => $loan->id,
'interest_amount' => $loan->amount * $loan->intrest_rate,
]);