我正在使用laravel框架并尝试创建条件计算表单。我有2个输入成人号码和儿童号码
<input type="text" name="nAdults" id="nAdults" value="" class="form-control ">
<input type="text" name="nChildren" id="nChildren" value="" class="form-control ">
此外,我还有3个输入需要显示成人价格,儿童价格和总价格。最后有一个输入可以申请折扣。
<input type="text" name="nPriceAdult" id="nPriceAdult" value="" class="form-control ">
<input type="text" name="nPriceChild" id="nPriceChild" value="" class="form-control ">
<input type="text" name="nTotalPrice" id="nTotalPrice" value="" class="form-control ">
<input type="text" name="nDiscount_percent" id="nDiscount_percent" value="" class="form-control ">
我的Controller文件看起来像这样
public function priceCalculator(Request $request)
{
$nAdults = $request->input('nAdults');
$nChildren = $request->input('nChildren');
$kfnTourID = $request->input('_kfnTourID');
$nPriceAdult = DB::table('tours')->where('_kpnID', $kfnTourID)->value('nPriceAdult');
$nPriceChild = DB::table('tours')->where('_kpnID', $kfnTourID)->value('nPriceChild');
echo $msg = $nPriceAdult * $nAdults; }
My Blade文件看起来像这样
var $nAdults = $('#nAdults'), $nPriceAdult = $('#nPriceAdult'), $nPriceChild = $('#nPriceChild');
$nAdults.on('keyup', function(){
$.ajax({
type: 'POST',
data: $('#bookingsFormAjax').serialize(),
url:'bookings/calculate',
dataType: 'json',
success: function(msg){
$nPriceAdult.val(msg);
$nPriceChild.val(msg);
console.log(msg);
}
});
});
我从数据库中获取这些价格
------------------------------------
_kpnID nPriceAdult nPriceChild
------------------------------------
2 100 50
3 200 100
当我在成人字段中输入1时,当我输入2时它显示100,它在成人价格输入中显示200。但我不确定如何在儿童价格字段中显示不同的价格以及如何在总价格文本输入中显示总数,也不通过在折扣字段中输入折扣百分比来应用折扣。例如,如果我输入&#34; 10&#34;在折扣领域,它应该以成人价格显示90美元,因为它将适用10%的折扣。我是编程新手。我将不胜感激任何帮助。
答案 0 :(得分:2)
这两行的结果是什么?我的猜测是他们可能会返回一个Collection,因为你稍后会对它们进行计算需要整数
$nPriceAdult = DB::table('tours')->where('_kpnID', $kfnTourID)->pluck('nPriceAdult');
$nPriceChild = DB::table('tours')->where('_kpnID', $kfnTourID)->pluck('nPriceChild');
根据Laravel Query Builder文档(https://laravel.com/docs/5.3/queries#retrieving-results),您需要使用->value('email')
从查询中返回单个值。所以它会变成:
$nPriceAdult = DB::table('tours')->where('_kpnID', $kfnTourID)->value('nPriceAdult');
$nPriceChild = DB::table('tours')->where('_kpnID', $kfnTourID)->value('nPriceChild');
答案 1 :(得分:0)
更改这些行:
$nPriceAdult = DB::table('tours')->where('_kpnID', $kfnTourID)->pluck('nPriceAdult');
$nPriceChild = DB::table('tours')->where('_kpnID', $kfnTourID)->pluck('nPriceChild');
如下:
$nPriceAdult = DB::table('tours')->where('_kpnID', $kfnTourID)->first()->nPriceAdult;
$nPriceChild = DB::table('tours')->where('_kpnID', $kfnTourID)->first()->nPriceChild;
我认为你明白我的观点。从DB查询中获取值时,它返回了一个集合对象。这不能直接用于需要整数或数字的等式中。因此,不要使用第一种方法将单行作为对象而不是获取集合,而不是采用值。然后使用该对象值。