Se tivéssemos um campo do tipo date time como geraríamos a data automática para ele? De forma que o nosso banco entendesse.
Se tivéssemos um campo do tipo date time como geraríamos a data automática para ele? De forma que o nosso banco entendesse.
Achei a solução. Passando para o nosso construtor o \DateTime("now") o framework faz essa associação e insere o datetime bonitinho pra gente. Só que para a hora ficar certinha temos que recorer a outro recurso do datetime;
Vou deixar um link de referência: https://www.doctrine-project.org/projects/doctrine-orm/en/2.13/cookbook/working-with-datetime.html
<?php
declare(strict_types=1);
namespace Src\Entity;
//use Doctrine\Common\Collections\ArrayCollection;
//use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
//use Doctrine\ORM\Mapping\ManyToMany;
//use Doctrine\ORM\Mapping\OneToMany;
#[Entity(repositoryClass: DoctrineUsersRepository::class)]
#[Table('users')]
class Users
{
#[Id]
#[Column, GeneratedValue]
private int $id;
#[Column(name: 'created_at')]
private \DateTime $createdAt;
public function __construct
(
#[Column(length: 100)]
public readonly string $name,
#[Column(length: 100)]
public readonly string $email,
#[Column(length: 15)]
public readonly string $cpf,
#[Column]
public readonly string $password
) {
$this->CreatedAt();
}
/**
* Set the value of createdAt
*/
public function CreatedAt()
{
$this->createdAt = new \DateTime("now");
return $this->createdAt;
}
}
Atenção a ordem do código determina a ordem da tabela. Definindo CreateAt após o construct, nosso banco de dados colocará a data no como última coluna.
<?php
declare(strict_types=1);
namespace Src\Entity;
//use Doctrine\Common\Collections\ArrayCollection;
//use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
//use Doctrine\ORM\Mapping\ManyToMany;
//use Doctrine\ORM\Mapping\OneToMany;
#[Entity(repositoryClass: DoctrineUsersRepository::class)]
#[Table('users')]
class Users
{
#[Id]
#[Column, GeneratedValue]
private int $id;
public function __construct
(
#[Column(length: 100)]
public readonly string $name,
#[Column(length: 100)]
public readonly string $email,
#[Column(length: 15)]
public readonly string $cpf,
#[Column]
public readonly string $password
) {
$this->CreatedAt();
}
#[Column(name: 'created_at')]
private \DateTime $createdAt;
/**
* Set the value of createdAt
*/
public function CreatedAt()
{
$this->createdAt = new \DateTime("now");
return $this->createdAt;
}
}
Olá, Philipe. Tudo bem?
Gostaria de pedir desculpas pela demora em responder o seu tópico.
Que bom que você conseguiu achar a solução para a sua problemática, e foi uma solução bem plausível. Parabéns!
Só deixar um comentário, você também poderia passar o formato dessa data, da seguinte maneira:
$data = new \DateTime("now");
var_dump($data->format("Y-m-d H:i:s"));
Isso pode ser útil, em algumas situações!
Bons estudos :)