我有一个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);
}
答案 0 :(得分:0)
我刚找到答案。我在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
事件起作用了。