使用 vue js 时在 laravel 中为 foreach 提供的参数无效

Posted

技术标签:

【中文标题】使用 vue js 时在 laravel 中为 foreach 提供的参数无效【英文标题】:invalid argument supplied for foreach in laravel while working with vue js 【发布时间】:2022-01-24 01:42:19 【问题描述】:

我想将我的数据存储在数据库中以获取提款详细信息和提款费用表。对于 Cashoutdetails,数据被存储在哪里,因为它返回了现金支出表的错误。下面是我的控制器代码--

  $date = Carbon::parse($request->input('recorded_date'));
        if($request->hasFile('bank_receipt')) 
            $file = $request->file('bank_receipt');
            $extension = $file->getClientOriginalExtension(); // getting image extension
            $filename =time().'.'.$extension;
            $file->move('../storage/app/cashoutdetails/'. $date->year .'/' . $date->format('M') . '/' ,$filename);
        

        $cashout_details = CashOutDetail::create([
            'user_id' => Auth::user()->id,
            'store_id' => $request->store_id,
            'recorded_date' => $request->recorded_date,
            'closing_report_total' => $request->closing_report_total,
            'total_deposit' => $request->total_deposit,
            'difference' => $request->difference,
            'prepared_by' => $request->prepared_by,
            'deposited_by' => $request->deposited_by,
            'deposit_date' => $request->deposit_date,
            'reference_number' => $request->reference_number,
            'bank_receipt'=> $filename,
            'comments' => $request->comments
        ]);
        $comments = $request->cashoutexpenses;
        //return $comments;
        if (! empty($comments)) 
        
            //return $comments;
            foreach($comments as $c => $value) 
                $cashout_comments = new CashOutExpenses;
                $cashout_comments->cashout_id = $cashout_details->id;
                $cashout_comments->amount = $c['amount'];
                $cashout_comments->comment = $c['comment'];
                $cashout_comments->save();
              
        
        else 
        
            return 'test';
        
        return response()->json([
            'message' => 'Details added!',
        ], 201);

如果我检查 $cmets

它给我的结果是 "cashoutexpenses":["amount":"100","comment":"exp"]

就像我运行 forloop 一样,它给出的结果是为 foreach() 提供的无效参数

【问题讨论】:

【参考方案1】:

全部需要 json_decode ,如下所示。

$cmets = json_decode($request->cashoutexpenses, true);

之前我只使用 json_decode 和一个参数,没有真正的关键字,这是行不通的

【讨论】:

【参考方案2】:

我认为你应该先 json_decode 你的 $cmets 然后你可以使用 foreach 来处理它

【讨论】:

我使用过 json_decode 然后我得到回复 ["amount":"100","comment":"exp","amount":"299","comment":" exo2"] for $cmets .... 但是如果我运行循环,它会返回相同的错误。(无效参数)请帮助 本例与本例相同,***.com/questions/70457463/…。解决方案是你在循环之前给出 if else

以上是关于使用 vue js 时在 laravel 中为 foreach 提供的参数无效的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 和 laravel 的 delete 方法问题

如何在 vue js 和 laravel 中使用外部脚本

如何在 laravel 应用程序中为单个 vue 组件实现 s-s-r?

如何在 Laravel 8 中为完整的日历 JS 插件添加额外的字段值

使用旧 Laravel 和 Vue.js 的更好方法

如何在 laravel 8 中为 vue 3 配置 Croppie?