как laravel обрабатывает многозначные атрибуты в таблице? - PullRequest
0 голосов
/ 25 апреля 2019

я понял, что "Interest_amount" в моей таблице "займа" является многозначным атрибутом.поэтому я должен просто создать таблицу для разделения таблицы «заем» или я должен создать другую модель?Мне нужна другая таблица для «процентов», так как я должен отмечать проценты за каждый месяц как оплаченные / невыплаченные.

Я создал новую модель «InterestAmount» и таблицу «Interest_amounts», которые должны автоматически вставляться после «кредита»."вставлено.

Loan('id','amount','interest_rate')
InterestAmounts('id','loan_id','interest_amount')

здесь Interest_amount - это значение, рассчитанное с использованием сумм и процентов.и данные в таблице Интересы должны быть вставлены автоматически.

мне нужно использовать событие и слушатель для автоматического входа ??

1 Ответ

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

В Laravel это можно решить с помощью отношения один ко многим.Здесь ваш один кредит имеет несколько процентов.

Итак, вам нужно определить две модели:

Одна - это 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,
]);
...