Php “错误”;为foreach()提供的参数无效;在拉维尔
这是我的blade视图,我在其中获取总收盘报告和总存款的值。如果不同,则自动计算并显示差异。根据差异,需要为差异金额添加以下详细信息,并存储在CashoOutExpense中。 例如-总结账报告为200,总存款为100,则需要提供差额金额的详细信息。i、 e 100。在这种情况下,假设用户通过添加另一行,在一个文本框中为费用金额输入了50,在另一个文本框中为50Php “错误”;为foreach()提供的参数无效;在拉维尔,php,laravel,vue.js,Php,Laravel,Vue.js,这是我的blade视图,我在其中获取总收盘报告和总存款的值。如果不同,则自动计算并显示差异。根据差异,需要为差异金额添加以下详细信息,并存储在CashoOutExpense中。 例如-总结账报告为200,总存款为100,则需要提供差额金额的详细信息。i、 e 100。在这种情况下,假设用户通过添加另一行,在一个文本框中为费用金额输入了50,在另一个文本框中为50 <div class="form-group row"> <div class=&quo
<div class="form-group row">
<div class="col-12">
<label>Total Closing Report</label>
<input class="form-control" v-model="form.closing_report_total" @change="calculate" type="number" required name="closing_report_total" placeholder="Enter Closing Report Total">
</div>
</div>
<div class="form-group row">
<div class="col-12">
<label>Total Deposit</label>
<input class="form-control" type="number" v-model="form.total_deposit" @change="calculate" required name="total_deposit" placeholder="Enter Total Deposit">
</div>
</div>
<div class="form-group row">
<div class="col-12">
<label>Difference</label>
<input class="form-control" type="number" v-model="form.difference" name="difference" placeholder="Enter Difference" readonly>
</div>
</div>
<div class="form-group row" v-if="form.difference != 0" v-for="(comment, k) in form.cashoutexpenses" :key="k">
<div class="col-4">
<input type="text" class="flatpickr form-control" v-model="comment.expense_date" required name="expense_date" placeholder="Click here to choose Date">
</div>
<div class="col-4">
<input class="form-control" type="number" v-model="comment.amount" required name="amount" placeholder="Enter Expense Amount" @change="calculate_error">
</div>
<div class="col-4">
<input class="form-control" type="text" v-model="comment.comment" required name="comment" placeholder="Enter Expense Comments">
</div>
<div class="col-4">
<button class="btn btn-sm btn-danger" type="button" @click="removeRow(k)">Remove</button>
</div>
</div>
<div class="form-group row" v-if="form.left > 0">
<div class="col-12">
<input class="btn btn-primary form-control" type="button" value="Add Row" @click="addRow()">
</div>
</div>
现在在我的控制器中,我正在获取如下所示的数据-
$comments = $request->form_cashoutexpenses;
//return $comments;
foreach($comments as $c) {
return $c;
$cashout_comments = new CashOutExpenses;
$cashout_comments->cashout_id = $cashout_details->id;
$cashout_comments->expense_date = $c['expense_date'];
$cashout_comments->amount = $c['amount'];
$cashout_comments->explanation = $c['comment'];
$cashout_comments->save();
}
return response()->json([
'message' => 'Details added!',
], 201);
如果我返回$comments,它将以[object object],[object object]的形式给出回复,否则它将为foreach返回错误
如果我返回$request->all()。。。它给出以下输出-
{“结账报告总额”:“200”,“存款总额”:“100”,“差额”:“100”,“form.cashooutexpenses”:“[对象]”}
请帮助我将此数据保存在现金支出表中。我不完全理解您的代码,但我注意到一些可能存在问题的部分:
$request->form\u cashoutexpenses
很可能不是数组,这就是您可能会遇到此错误的原因。您可以通过放入dd($comments,gettype($comments))来检查它代码>在声明$comments
并重新运行页面后
foreach
循环的第一行包含return
语句似乎很愚蠢,因为下面的代码永远不会执行dd($comments->toArray());。如果我写这篇文章,它会返回错误为“调用字符串上的成员函数toArray()”,请尝试dd($request->all())显然
form。cashooutexpenses
是JS端的数组(“[object object]”建议JS将数组转换为字符串),但您的库没有正确处理它,请尝试以某种方式对其进行编码。还有为什么所有的JSON.parse(JSON.stringify(x))
?这只是转换成JSON并返回,它什么也不做。哦,是的!!它不是数组,而是将数组转换为字符串。如果我选中了--dd($comments,gettype($comments);。它给我的输出是“[object]”,然后是“string”。你现在能告诉我该怎么做吗?在问题的注释中,建议你使用dd($request->all())
。请执行此操作并发布问题结果,以便我们了解您正在处理的数据。我已按照您的建议编辑了问题,您可以检查!!您可以看到您添加的输出表明您的请求中没有表单\u现金支出
。很可能表单。现金支出
是您需要的ed,但无论如何,它是作为对象而不是数组发送到laravel控制器的。我认为您应该调整发送表单的js部分,以便它发送数组。
cashoutexpenses:Array[2]
0:Object
amount:"50"
comment:"test2"
date:""
expense_date:"2021-10-10"
1:Object
amount:"50"
comment:"test3"
date:""
expense_date:"2021-10-12"
$comments = $request->form_cashoutexpenses;
//return $comments;
foreach($comments as $c) {
return $c;
$cashout_comments = new CashOutExpenses;
$cashout_comments->cashout_id = $cashout_details->id;
$cashout_comments->expense_date = $c['expense_date'];
$cashout_comments->amount = $c['amount'];
$cashout_comments->explanation = $c['comment'];
$cashout_comments->save();
}
return response()->json([
'message' => 'Details added!',
], 201);