Php 使用关系数据对事件进行建模
我有一个Php 使用关系数据对事件进行建模,php,laravel,eloquent,laravel-6,Php,Laravel,Eloquent,Laravel 6,我有一个费用模型,您可以在其中选择您的费用是哪种货币。费用与项目模型相关,用户也可以为项目设置特定货币。例如,即使您以欧元开具项目发票,您也可以以美元支付费用 因此,我想在保存模型时将费用转换为“当地货币”(项目货币) 但是,我体验到,当在尚未实际保存的模型上使用保存(甚至保存)事件时,从关系中获取货币将不起作用 $project\u currency=$model->project->currency; 这将返回ErrorException:尝试获取非对象的属性“currency” Expe
费用
模型,您可以在其中选择您的费用是哪种货币。费用与项目
模型相关,用户也可以为项目设置特定货币。例如,即使您以欧元开具项目发票,您也可以以美元支付费用
因此,我想在保存模型时将费用转换为“当地货币”(项目货币)
但是,我体验到,当在尚未实际保存的模型上使用保存
(甚至保存
)事件时,从关系中获取货币将不起作用
$project\u currency=$model->project->currency;
这将返回ErrorException:尝试获取非对象的属性“currency”
ExpenseController
如下所示:
公共功能存储(StoreExpenseRequest$request,Project$Project)
{
$validated=$request->validated();
$expense=费用::创建($validated);
$project->expenses()->save($expense);
闪存(“节省费用”)->success();
return redirect()->route('project.show',$project->id);
}
我刚找到答案。我将ExpenseController
上的store
方法编辑为:
公共功能存储(StoreExpenseRequest$request,Project$Project)
{
$validated=$request->validated();
$expense=新费用($validated);
$project->expenses()->save($expense);
闪存(“节省费用”)->success();
return redirect()->route('project.show',$project->id);
}
然后,
保存
事件工作。我希望费用
有一个项目id
字段?你在设定吗?您可以在节省费用之前获取相关项目,并在此时将其转换。您是否尝试了创建的事件
?是的,我在费用
上有一个项目id
字段。实际上我还没有尝试过创建事件,因为我需要这个事件来处理新的和现有的模型。