Bonjour,
Je n'arrive pas ajouter le champ date dans mon entity. Merci d'avance
J'aimerais pouvoir insérer une date automatiquement à chaque insertion de l'entité Souscripteur.php. du coup j'ai rajouté ceci
/**
* @ORM\Column(type="datetime")
* @Assert\DateTime
*/
private $publishedAt;
public function __construct()
{
$this->publishedAt = new \DateTime('now');
}
J'aimerais que dans ma base le champ publishedAt se crée automatiquement avec la date d'insertion des données
Mais quand je veux faire la migration pour mettre à jour les champs de la BDD, j'obtiens cette erreur :
In PDOConnection.php line 125:
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00' for column 'p
ublished_at' at row 1
C'est un problème de format de date. Ta BDD attend un format de type AAAA-MM-JJ HH:MM:SS et celle que tu lui envoies n'est pas dans ce format.
Ok stp mais comment mettre le bon format pour la base de données ?
J'ai ressayé ceci mais j'ai encore l'erreur d'invalidité :
/**
@Assert\DateTime(format="YYYY-MM-DD hh:mm:ss")
*/
private $publishedAt;
public function __construct()
{
$this->publishedAt = new \DateTime('now');
}
Je n'ai pas travailler avec l'objet DateTime, mais avec la fonction date. Attention toutefois au fuseau horaire.
Voici ce que j'ai fait pour la colonne last_login
function logmein(array $user): array{
if (session_status()===PHP_SESSION_NONE):
session_start();
endif;
require 'pdo.php';
$u_log = $user[0];
$u_pass = $user[1];
$req = $bdd->prepare("SELECT log_in, u_password, id_role, last_login FROM users WHERE log_in = :log_in AND u_password = :u_password");
$req->execute(array(
'log_in' => $u_log,
'u_password' => $u_pass,
));
$finduser= $req->fetch();
if(!empty ($finduser)){
$_SESSION['user_role']=$finduser[2];
$_SESSION['user_last_log']=$finduser[3];
$_SESSION['user_connected']=true;
date_default_timezone_set('Europe/Paris');
$date = date("Y-m-d H:i:s");
$req_update = $bdd->prepare('UPDATE users SET last_login = :last_login WHERE log_in = "'.$u_log.'"');
$req_update->bindParam(':last_login', $date, PDO::PARAM_STR);
$req_update->execute();
return [true, $finduser[2], $finduser[3]];
}else{
return [false, $finduser[2], $finduser[3]];
};
$finduser->closeCursor();
};
Et ça marche parfaitement.
En espérant que ça t'aidera