在拉拉维尔的表中插入计算数据



我需要存储使用get_Attribute函数计算的interest_amount,但现在我需要将其插入表中。

我已经使用static::saving函数来计算interest_amount我不知道如何在控制器中使用$data调用它

贷款.php

use IlluminateDatabaseEloquentModel;
class Loan extends Model
{
    protected $fillable = [
        'amount',
        'interest',
        'status',
        'duration',
        'member_id',
        'loan_type_id',
        'interest_type_id',
        'loan_payment_type_id'
    ];
    protected $appends = 'interest_amount';
    public function getInterestAmountAttribute()
    {
        return ($this->amount)/100 * $this->interest;
    }
    public function member()
    {
        return $this->belongsTo(Member::class,'member_id','id');
    }
    protected static function boot() 
    {
        parent::boot();
        static::saving(function($model) {
            $model->interest_amount = ($model->amount/100 ) * $model->interest;
        });
    }
}

贷款控制.php

$data['amount'] = $request->amount;
$data['interest'] = $request->interest;
$data['interest_amount'] = $interest_amount;
$data['duration'] = $request->duration;
$data['status']= $request->status;
$data['member_id'] = $request->name;
$data['loan_type_id']= $request->loan_type;
$data['interest_type_id']= $request->interest_type;
$data['loan_payment_type_id']= $request->payment;
if(DB::table('loans')->insert($data)){
    return redirect()->route('loan')->with('success','data was successfuly inserted');
}

我最初没有interest_amount列,但后来我添加了它。我不知道如何使用我在控制器中使用的方法调用 saving 函数。

使用查询生成器将数据插入表中时,不会触发模型事件。

您必须使用模型来保存数据,如下所示:

如果模型属性可批量分配:

if((new Loan($data))->save()){
    return redirect()->route('loan')->with('success','data was successfuly inserted');
}

否则:

$loan = new Loan;
$loan->amount = $request->amount;
$loan->interest = $request->interest;
$loan->interest_amount = $interest_amount;
$loan->duration = $request->duration;
$loan->status = $request->status;
$loan->member_id = $request->name;
$loan->loan_type_id = $request->loan_type;
$loan->interest_type_id = $request->interest_type;
$loan->loan_payment_type_id = $request->payment;
if($loan->save()){
    return redirect()->route('loan')->with('success','data was successfuly inserted');
}

最新更新