【问题标题】:How to insert date in laravel Controller? [closed]如何在 laravel 控制器中插入日期? [关闭]
【发布时间】:2020-11-06 07:34:27
【问题描述】:

我在控制器中使用代码:-

$leave = new Leavemodel();
$leave->leave_startdate = date('Y-m-d', strtotime($request->input('startdate')));
$leave->leave_enddate = date('Y-m-d', strtotime($request->input('startdate')));
$leave->leave_notify = 0;
$leave->leave_reasone = $request->input('reason');
$leave->leave_notify = 0;
$leave->save();
return Redirect::back();

我有这种类型的错误:- enter image description here

【问题讨论】:

  • isset($request->input('startdate'))?date('Y-m-d', strtotime($request->input('startdate'))) :null;
  • 但我在 $request->input('startdate') @iCoders 中得到日期值
  • 使用碳相同的错误@iCoders
  • 你能显示 dd($request->all());打印值
  • array:5 [▼ "_token" => "cUqpwpw414bFPbcIit8oK9hJG07KDX8qOKGo1D3h" "startdate" => "07/11/2020" "enddate" => "15/11/2020" "reason" => "

    null ]

标签: php laravel date


【解决方案1】:

在转换为字符串时间之前,您可能需要格式化字符串日期

date('Y-m-d', strtotime(str_replace('/', '-',$request->input('startdate'))))

如果你使用的是 Carbon 那么

$date = Carbon\Carbon::createFromFormat('d/m/Y', $request->input('startdate'));
dd($date->toDateString());

更新: 为避免错误,请在插入前验证数据

$validator = Validator::make($request->all(), [ 
      'startdate' => 'required|date_format:d/m/Y',
         'enddate' => 'required|date_format:d/m/Y',
  ]);

  if ($validator->fails()) {
    return response()->json($validator->errors(), 422);
  }
  
$leave = new Leavemodel();
$leave->leave_startdate = date('Y-m-d', strtotime($request->input('startdate')));
$leave->leave_enddate = date('Y-m-d', strtotime($request->input('startdate')));
$leave->leave_notify = 0;
$leave->leave_reasone = $request->input('reason');
$leave->leave_notify = 0;
$leave->save();
return Redirect::back();

【讨论】:

  • GETTING :- 找不到分隔符号 发现意外数据。尾随数据@iCoders
  • @for Carbon 代码然后从 $request->input('startdate') 检查格式是否正确,我的意思是 10/11/2020 类似这样
  • 添加验证以检查日期格式以避免此问题。可能是开始日期为空或格式不同
  • 窃取我从空值@iCoders创建默认对象
  • 你能展示完整的模型类吗
【解决方案2】:
//
    $validator = Validator::make($request->all(), [
                'startdate' => 'required|date_format:d/m/Y',
                'enddate' => 'required|date_format:d/m/Y',
                'reason' => 'required|min:20',
    ]);

    if ($validator->fails()) {
        return response()->json($validator->errors(), 422);
    }
    $date_start = $request->input('startdate');
    $date2_start = DateTime::createFromFormat('d/m/Y', $date_start);
    $date3_start = $date2_start->format("Y-m-d");
    $date_end = $request->input('enddate');
    $date2_end = DateTime::createFromFormat('d/m/Y', $date_end);
    $date3_ens = $date2_end->format("Y-m-d");

    $leave = new Leavemodel();
    $leave->leave_startdate = $date3_start;
    $leave->leave_enddate = $date3_ens;
    $leave->leave_notify = 0;
    $leave->leave_reasone = $request->input('reason');
    $leave->save();

【讨论】:

    【解决方案3】:

    模型集 $fillable 或 $guarded ;

    protected $fillable = [
     'leave_startdate','leave_enddate',
     'leave_notify','leave_reasone','leave_notify'
     ]
    

    如果没有时间戳,请在数据库中将以下值设置为false

    public $timestamps  = false
    

    控制器存储

    return Redirect::back();
    
    Leavemodel::craete([
    'leave_startdate ' => Carbon\Carbon::createFromFormat('d/m/Y', $request->input('startdate')),
    'leave_enddate' =>  Carbon\Carbon::createFromFormat('d/m/Y', $request->input('startdate')),
    'leave_notify' => 0,
    'leave_reasone' => $request->input('reason'),
    'leave_notify' => 0,
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 2018-08-09
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多