【问题标题】:How to solve: Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given如何解决:传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串
【发布时间】:2021-02-08 12:33:19
【问题描述】:

我想存储date,但出现问题。

输入

    <div class="col-lg-6">
       <div class="form-group">
          <label>Date</label>
          <input type="date" name="date" id="date" class="form-control form-control-sm">
       </div> 
    </div>


Controller
public function store(Request $request){
        if($request->category_id == null){
            return redirect()->back()->with('error', 'Please Purchase The Product');
        } else{
            // Multipale Data Insert start //
            $purchase = new purchase();
            $purchase->purchase_no = $request->purchase_no;
            $purchase->date        = $request->date; 
            $purchase->description = $request->description;
            $purchase->status      = '0';
            $purchase->created_by  = Auth::user()->id;
            DB::transaction(function() use($request,$purchase) {
               if($purchase->save()) {
                // Purchase Details Insert Start //
                $category_id = count($request->category_id);
                for ($i=0; $i < $category_id; $i++) { 
                    $purchaseDetail = new purchaseDetail();
                    $purchaseDetail->date               = date('Y-m-d', strtotime($request->date));
                    $purchaseDetail->purchase_id        = $purchase->id;
                    $purchaseDetail->supplier_id        = $request->supplier_id[$i];
                    $purchaseDetail->category_id        = $request->category_id[$i];
                    $purchaseDetail->product_id         = $request->product_id[$i];
                    $purchaseDetail->buying_qty         = $request->buying_qty[$i];
                    $purchaseDetail->unit_price         = $request->unit_price[$i];
                    $purchaseDetail->buying_price       = $request->buying_price[$i];
                    $purchaseDetail->discount_amount    = $request->discount_amount[$i];
                    $purchaseDetail->ppn                = $request->ppn[$i];
                    $purchaseDetail->status              = '0';
                    $purchaseDetail->save();
                }
            }
            });
        }
        // Redirect 
        return redirect()->route('purchase.view')->with('success', 'Purchase Added Successfully');
    }

当我存储它时,出现如下错误:

传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须 是数组类型,给定字符串,在 D:\Project 中调用 Laravel\alc-pos\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php 在第 869 行

我尝试改变这个$purchase-&gt;date = $request-&gt;date;

在这个$purchase-&gt;date = date('Y-m-d', strtotime($request-&gt;date)); 中出现类似ErrorException strtotime() expects parameter 1 to be string, array given 的错误:

strtotime() 期望参数 1 是字符串,给定数组

【问题讨论】:

标签: php laravel


【解决方案1】:

似乎$request-&gt;date 是一个数组。通过echo print_r($request-&gt;date, true); 确认$request-&gt;date 确实是一个数组,如果是,您可以看到它的结构。从那里拿走。

目前还没有那么多事情要做。

编辑:

最终解决方案(由@JulienBaldy 在评论部分提供): 改变

$purchase-&gt;date = $request-&gt;date;

进入

$purchase-&gt;date = date('Y-m-d', strtotime( $request-&gt;date[0]));

【讨论】:

  • 是的,它是一个数组,输出:Array ( [0] =&gt; 2020-10-26 )
  • 所以试试这个: $purchase->date = date('Ym-d', strtotime( $request->date[0]->format('Ymd H:i:s') ) );
  • @Adrian nah,仍然是同样的问题.. 如果在这个问题上问太多我的新手,我很抱歉 :')
  • @JulienBaldy 发生这种情况:调用字符串上的成员函数 format()
  • @Naldaff 哦,是的,对不起。没有格式! $purchase->date = date('Y-m-d', strtotime($request->date[0]));
猜你喜欢
  • 2018-03-22
  • 2019-08-23
  • 2021-08-19
  • 1970-01-01
  • 2020-10-15
  • 2021-12-24
  • 2021-06-30
  • 2019-09-18
  • 2020-10-29
相关资源
最近更新 更多