我对type_training , training & payment
这3张桌子有些犹豫。
在表type_training
中,我有一个名为price
的字段,其中包含4个数量:例如:
1小时00 = 100 欧元
1小时30 = 150 欧元
2小时00 = 200 欧元
2小时30 = 250 欧元
在我的页面培训中,我为同一位学生录制了2张录音。
学生Dujardin
为3 hours
预订了300 euros
。
以我的形式Payment
,是否可以提取300
的金额?
那么,在我的模型Payment
中?我必须计算hour start
和hour end
之间的差吗?
我不知道该怎么办?
然后,在我的示例中检索了时差之后,我们得到了3 hours
。
如何对我的Total
字段中的2个记录求和?我试过了吗?
$typetraining = Typetraining::find($request->fk_typetraining);
$data = $request->all();
$data['total'] = $typetraining->price + $request->????;
Payment::create($data);
总结:
1)如何获取hour start
和hour end
之间的差异,
2)如何通过培训持续时间计算金额?
有关信息,这是我的体系结构。
感谢您的帮助和解释。
编辑:沃特卡姆扬19/09/2019
我自适应了吗?
createFromFormat('H:i', $request->get('hour_start'))
每个:
<div class="form-group{{ $errors->has('hour_start') ? 'has-error' : '' }}">
<label for="form-group-input-1">Hour start</label>
<input type="text" name="hour_start" id="hour_start" class="form-control" required="required" value="{{ old('hour_start')}}"/>
{!! $errors->first('hour_start', '<span class="help-block">:message</span>') !!}
</div>
然后,在我的模型培训中,我收到了以下错误消息:未定义的变量:typeseances
$start = Carbon::parse($request->get('hour_start'));
$end= Carbon::parse($request->get('hour_end'));
$mins = $end->diffInMinutes($start, true);
$hoursTraining = $mins/60;
$total = $**typeTraining**->price * $hoursTraining;
我有类似的错误消息:未定义的变量:typeseances
答案 0 :(得分:1)
我建议以下内容:
答案 1 :(得分:1)
我认为,正如乔·加林德(JoeGalind)所说的那样,您应该认真考虑重新设计架构以使其更简单。实际上,必须调用只需要价格的 TypeTraining 对象,实际上应该将其移动到 Training 对象。但是,让我来介绍一种使用您现有的代码来解决它的方法。
首先,正如您所说,您需要获取所请求培训的小时数。不幸的是,您需要部分时间而非全部时间来更改价格。如果您需要整个小时,这很容易,您可以使用Carbon方法diffInHours()
。但是我们可以使用diffInMinutes()
来完成,然后计算出不完整的小时数。
首先,我们需要将表单中的小时数解析为Carbon对象:
$start = Carbon::parse($request->get('hour_start'));
$end= Carbon::parse($request->get('hour_end'));
注意,我不知道它是如何从您的表单中传入的。如果上述方法不起作用,则可能需要以不同的方式解析它。像这样:
createFromFormat('H:i', $request->get('hour_start'))
或
createFromFormat('H:i:s', $request->get('hour_start'))
现在您有了一个碳物体,我们需要计算出差异,包括工时。同样,我们将使用分钟数并计算部分小时数:
$mins = $end->diffInMinutes($start, true);
$hoursTraining = $mins/60;
这将产生乘数(培训时数),例如2.0或2.5或2.25,等等。从这里开始,如果您有一个小时的基本价格(这就是我期望的 TypeTraining 模型的price
字段),很容易:
$total = $typeTraining->price * $hoursTraining;
根据您的代码设置方式,最困难的部分是您必须拉 TypeTraining 和 Training ,以便了解价格(再次-只需在培训上付出代价,使生活更轻松)。
要获取价格,类似这样:
$training = Training::with('typeTraining')->where('fk_student', $request->get('fk_student)->first();
$price = $training->typeTraining->price;
现在您已经可以插入上面的公式了。
这肯定不正确。而用FK对学生进行培训可能不是您想要的。如果是常规培训,或者有其他一些标识符,请使用该标识符拉动培训以获取价格。但是您可以稍后再决定。我只能猜测其中的一部分,因为我不知道会发生什么,或者您的查询需要什么,或者您的关系,但这应该可以给您一个思路。最重要的是,您要询问如何计算总数,以上已作进一步回答。