Symfony вызов функции-члена getTimezone () для целого числа

Я хочу преобразовать таблицу столбцов: create_on из типа DateTime в тип Bigint.
Таким образом, он сохраняет текущее значение даты и времени в таблицу базы данных MySQL.

Из контроллера, как я пытаюсь вызвать метод

$smiledMoment->setCreatedValues();

В моем файле Entity:

     /**
* @param integer $created_on
*
* @ORM\Column(name="created_on", type="bigint")
*/

protected $created_on;
/**
* Set created_on
*
* @param integer $created_on
* @return SmiledMoment
*/
public function setCreatedOn($created_on)
{

$datetime = (array) $created_on;
$dat = strtotime($datetime['date']);
//echo $dat->format('d/m/Y');
//exit;
$this->created_on = $dat;
return $this;
}
/**
* Get created_on
*
* @return \DateTime
*/
public function getCreatedOn()
{
return $this->created_on;
}

/**
* Set initial value for created_on/modified_on values
*
* @ORM\PrePersist
*/
public function setCreatedValues()
{

$this->setCreatedOn(new \DateTime());
}

Из значения $ dat генерируется как 1517900080 (т.е. значение метки времени).
Но к сожалению я получаю ошибку как

FatalThrowableError в строке 25 UTCDateTimeType.php: вызов участника
Функция getTimezone () на целое число

0

Решение

Вам нужно сначала преобразовать метку времени UNIX в объект DateTime следующим образом: $dt = new DateTime('@' . $timestamp);

1

Другие решения

Есть несколько способов справиться с этим, но если мы продолжим в том же направлении, мы вернем вам DateTime объект. Для этого вам нужно будет конвертировать ваши int назад во времени

/**
* Get created_on
*
* @return \DateTime
*/
public function getCreatedOn()
{
$date = new DateTime();
return $date->setTimestamp($created_on);
}
1

Если вы действительно хотите сохранить дату в базе данных MySql как целое число — самый правильный способ достижения этого — это создать собственный тип отображения Doctrine.
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/custom-mapping-types.html

Чтобы получить некоторые подсказки о том, как это сделать, посмотрите на реализацию DateTimeType доктрины по умолчанию:
https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Types/DateTimeType.php

0
По вопросам рекламы [email protected]