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

Posted

技术标签:

【中文标题】ErrorException strtotime() 期望参数 1 是字符串,给定数组【英文标题】:ErrorException strtotime() expects parameter 1 to be string, array given 【发布时间】:2021-02-06 07:12:43 【问题描述】:

谁能帮帮我?这是我的控制器,当我尝试存储“购买”数据时,它显示此消息 strtotime() 期望参数 1 是字符串,给定数组 错误出现在$purchase->date = date('Y-m-d', strtotime($request->date));$purchaseDetail->date = date('Y-m-d', strtotime($request->date));

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        = date('Y-m-d', strtotime($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');

您好,我尝试将$purchase-&gt;date = date('Y-m-d', strtotime($request-&gt;date)); 更改为$purchase-&gt;date = $request-&gt;date; 但结果是 TypeError 传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串,在 D:\Project Laravel\alc-pos\vendor\laravel\framework\src\Illuminate\Database\Query\ 中调用第 869 行的 Grammars\Grammar.php

【问题讨论】:

好吧,看起来$request-&gt;date 是一个数组。这段代码没什么好说的,错误似乎很明显。 正如@Jeto 所说...检查 $request->date 的类型。将任何响应放入数组中并不罕见(例如 AWS 服务)。即使只有一个元素。这标准化了 API 行为,因此即使只有一个元素,您也总是可以期待数组类型。 @Jeto 怎么解决? 【参考方案1】:

至于我的意见,您在保存到数据库时不能格式化您的日期。 相反,您可以在将其从数据库输出到刀片模板时对其进行格式化。

随便查一下$request-&gt;date,好像是个数组。

您可以像这样在模型中使用 Laravel 访问器来格式化您的日期(示例):

    public function getFormattedStartDateAttribute()
    
        return $this->start_date->format('d-m-Y');
    

然后像这样在刀片模板中调用它(示例):

 <input type="text" name="start_date" class="form-control" value="$trip->formatted_start_date">

更多关于 Laravel 修改器和访问器的信息:Laravel Docs

你也可以做另一件事。在您的schema::create 上制作:

$table->date('date_name_column');

然后像下面这样保存它:

        $purchaseDetail->date = $request->input('date');

这样数据库中的日期将保存为:YYYY-MM-DD

希望对你有帮助!

【讨论】:

更新了答案,试试看,告诉我它是否适合你。

以上是关于ErrorException strtotime() 期望参数 1 是字符串,给定数组的主要内容,如果未能解决你的问题,请参考以下文章

ErrorException:未定义的索引:id

ErrorException:未定义的变量:天[重复]

HasRelationships.php 中的 ErrorException

ErrorException [错误]:找不到类“Model_Search”

updateOrCreate 在 laravel 中导致 ErrorException

高级模板安装问题 [ErrorException] touch(): Utime failed: Permission denied