Laravel 5如何向SQL数据库提交日期

时间:2017-02-15 23:38:46

标签: php laravel-5

我已经被困了好几天了,我无法将我的日期保存到我的数据库中,并且在问题发生后有问题。有人可以推荐一个视频/文章,或只是简单解释如何完全处理日期?

移植

    $table->dateTime('start_date');
    $table->dateTime('end_date');

控制器

public function store(Request $request)
{
  $this->validate(request(), [

    'name' => 'required',
    'description' => 'required',
    'status' => 'required',
    'startdate' => 'required',
    'enddate' => 'required'

  ]);

 Event::create(request(['name', 'description', 'status', 'start_date', 'end_date']));

    return redirect('/events');
}

模型

THIS IS OBVIOUSLY THE ISSUE and I would paste things but theres multiple things I've put here and nothing works.

这是请求的dd

 +request: ParameterBag {#40 ▼
#parameters: array:6 [▼
  "_token" => "yjU5A0Z5dpRES7KWK82fRMbHMRQkaooe27vYKlo7"
  "name" => "My first event"
  "status" => "Inquery"
  "description" => "this is my desc"
  "start_date" => "02/16/2017 6:36 PM"
  "end_date" => "02/24/2017 6:37 PM"
]

1 个答案:

答案 0 :(得分:1)

您需要以其理解的格式向数据库提供日期(通过laravel)。

您在前端使用d/m/Y H:i A格式(有关日期格式的更多信息,请参阅PHP Date page)。数据库喜欢以Y-m-d H:i:s格式接收日期。更好的是,laravel可以将Carbon日期对象插入到数据库中,而不需要格式化。

由于Carbon附带了Laravel,您可以使用它将日期字符串更改为Carbon对象。

$start_date = \Carbon\Carbon::createFromFormat('d/m/Y H:i A', $request->input('start_date'));

如您所见,Carbon获取日期字符串,并且随着格式的提供,它可以轻松创建新的Carbon对象。这可以直接插入数据库。

如果您真的想要,可以使用$start_date->toDateTimeFormat();$start_date->format('Y-m-d H:i:s');将其明确地转换为字符串。

// put the first three elements in the insertData array
$insertData = request()->only(['name', 'description', 'status']);
$insertData['start_date'] = \Carbon\Carbon::createFromFormat('d/m/Y H:i A', $request->input('start_date'));
$insertData['end_date'] = \Carbon\Carbon::createFromFormat('d/m/Y H:i A', $request->input('end_date'));

// both dates are now carbon objects, not strings 
Event::create($insertData);