Модельное событие с данными отношений - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть модель Expense, в которой вы можете выбрать валюту для своих расходов. Расходы связаны с моделью Project, и пользователь также может установить конкретную валюту для проекта. Например, у вас могут быть расходы в долларах США, даже если вы выставляете счет на проект в евро.

Поэтому я хочу при сохранении модели преобразовать расходы в "местную валюту" (валюту проекта).

Однако я столкнулся с тем, что при использовании события saving (или даже saved) для модели, которая еще не была сохранена, не получится получить валюту из отношения.

$project_currency = $model->project->currency;

Возвращает ErrorException: Trying to get property 'currency' of non-object

ExpenseController выглядит следующим образом:

public function store(StoreExpenseRequest $request, Project $project)
{
    $validated = $request->validated();
    $expense = Expense::create( $validated );
    $project->expenses()->save( $expense );
    flash('Expense Saved')->success();
    return redirect()->route('project.show', $project->id);
}

1 Ответ

0 голосов
/ 06 ноября 2019

Я только что нашел ответ. Я отредактировал метод store на ExpenseController следующим образом:

public function store(StoreExpenseRequest $request, Project $project)
{
    $validated = $request->validated();
    $expense = new Expense( $validated );
    $project->expenses()->save( $expense );
    flash('Expense Saved')->success();
    return redirect()->route('project.show', $project->id);
}

А затем сработало событие saving.

...