具有关系数据的模型事件

我有一个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);
}
xiaoyuwuxin22 回答:具有关系数据的模型事件

我刚找到答案。我在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事件起作用了。

本文链接:https://www.f2er.com/3150246.html

大家都在问