Laravel - Почему есть тип timezone_type и часовой пояс, когда я вставляю Carbon :: now () в MongoDB - PullRequest
0 голосов
/ 05 июля 2018

Когда я эхом Carbon::now(). Отображает только дату и время. "2018-07-05 09:21:21"

Но когда я вставляю это в MongoDB, он становится объектом;

{
    "date" : "2018-07-05 09:21:21.020981",
    "timezone_type" : 3,
    "timezone" : "UTC" 
}

Я хочу получить данные только на date. Почему это происходит?

EDIT:

Я пытался сделать это

$currentDateTime = strtotime(Carbon::now());

$request->merge([
    'dateSample' => date("Y-m-d H:i:s", $currentDateTime)
]);

Но сохраняется как string тип. Мне нужно, чтобы это было Date тип.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

убедитесь, что в столбце таблицы базы данных задан тип date example_date date DEFAULT NULL,

упс, моя ошибка, вы хотите использовать merge ()

$request->merge([
    'dateSample' => \Carbon\Carbon::now()->format('Y-m-d');
]);
0 голосов
/ 05 июля 2018

потому что когда вы echo Carbon::now() в это время вызываете __toString функцию Вот код.

public function __toString()
{
    return $this->format(static::$toStringFormat);
} 

Если вы используете dd(Carbon::now());, вы должны увидеть этот результат

{
    "date" : "2018-07-05 09:21:21.020981",
    "timezone_type" : 3,
    "timezone" : "UTC" 
}

когда echo Carbon::now(); в этом случае вы видите результат Carbon::now()->__toString(), который равен "2018-07-05 09:21:21";
Редактировать
Для получения DateTime объекта вы можете

$currentDateTime = \Carbon\Carbon::now()->toDateTimeString();
$date = new DateTime($currentDateTime);
...