Извлечь данные родительской модели в загрузочную функцию static :: save () - PullRequest
1 голос
/ 23 апреля 2019

Я хочу использовать данные из родительской модели для запуска функции 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 Ответ

1 голос
/ 23 апреля 2019

Переменная $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');
}
...