Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用关系数据对事件进行建模_Php_Laravel_Eloquent_Laravel 6 - Fatal编程技术网

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
字段。实际上我还没有尝试过创建事件,因为我需要这个事件来处理新的和现有的模型。