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 “错误”;为foreach()提供的参数无效;在拉维尔_Php_Laravel_Vue.js - Fatal编程技术网

Php “错误”;为foreach()提供的参数无效;在拉维尔

Php “错误”;为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

这是我的blade视图,我在其中获取总收盘报告和总存款的值。如果不同,则自动计算并显示差异。根据差异,需要为差异金额添加以下详细信息,并存储在CashoOutExpense中。 例如-总结账报告为200,总存款为100,则需要提供差额金额的详细信息。i、 e 100。在这种情况下,假设用户通过添加另一行,在一个文本框中为费用金额输入了50,在另一个文本框中为50

<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);