2017-02-15 4 views
0

Я застрял в течение нескольких дней, я не могу получить свои даты для сохранения в моей базе данных и проблемы после выпуска. Может ли кто-то рекомендовать видео/статью или просто объяснить, как полностью заниматься датами?Laravel 5 Как отправить даты в базу данных SQL

Миграция

$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. 

Это дд запроса

+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" 
] 
+0

Какую базу данных вы используете? – Jackowski

+0

Соединение с базой данных в файле .env - это mysql – DevJustin

ответ

1

Вам необходимо указать даты в базе данных (через laravel) в том формате, который он понимает.

Вы используете формат d/m/Y H:i A на переднем конце (см. PHP Date page для получения дополнительной информации о форматах даты). База данных любит получать даты в формате Y-m-d H:i:s. Еще лучше, laravel может вставлять объекты Carbon date в базу данных без форматирования с вашей стороны.

Поскольку Carbon поставляется с Laravel, вы можете использовать его для изменения строки даты в объект Carbon.

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

Как вы можете видеть, карбон принимает строку даты и как формат был поставлен, то просто для того, чтобы создать новый объект углерода. Это можно напрямую вставить в базу данных.

Если вы действительно этого хотели, вы могли бы явно передать его в строку с помощью $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); 
+0

Спасибо за ответ, я смутился о том, что вы сказали в конце об использовании события для вставки модели. модель называется Event, поэтому ее в моем контроллере. – DevJustin

+0

Gotcha. Я думал, что это код для создания события в laravel. Я удалю эту часть. – Mei

+0

Итак, где бы я разместил вашу строку кода? Я довольно новичок в laravel, и я просмотрел видео, но все еще учился :) Поблагодари за помощь :) – DevJustin

Смежные вопросы