Извлечь данные родительской модели в загрузочную функцию static::save ()
Я хочу использовать данные из родительской модели для запуска saving()
функция в дочерней модели
Ранее я вставлял вычисленные данные в таблицу в модели "Заем", но теперь мне нужно вставить ее в дочернюю модель "InterestAmount
"
Loan.php
use Illuminate\Database\Eloquent\Model;
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
protected static function boot()
{
parent::boot();
static::saving(function($model) {
$model->interest_amount = ($model->amount/100 )* $model->interest;
});
}
public function interest_amount()
{
return $this->hasMany(InterestAmount::class,'loan_id','id');
}
}
Я хочу удалить функцию сохранения из Loan.php и использовать, как показано ниже.
Interest.php
use Illuminate\Database\Eloquent\Model;
class InterestAmount extends Model
{
public function loan()
{
$this->belongsTo(Loan::class,'loan_id','id');
}
protected static function boot()
{
parent::boot();
static::saving(function($model) {
$model->interest_amount = ($model->amount/100 )* $model->interest;
});
}
}
Как получить "количество" и "интерес" в этой функции?
1 ответ
$model
переменная внутри InterestAmount
модель относится к InterestAmount
объект:
static::saving(function($model){
$model->interest_amount = ($model->loan->amount/100 )* $model->loan->interest;
});
Тогда вам нужно получить связанный loan
используя ваш метод отношений loan()
затем получить свойства amount/interest
,
ПРИМЕЧАНИЕ. Как говорится в комментарии @namelivia, вы упускаете return
в loan()
метод:
public function loan()
{
return $this->belongsTo(Loan::class,'loan_id','id');
}