Vous ne pouvez pas car le pilote PHP PDO ne prend pas en charge les fractions de secondes dans les horodatages. Une solution consiste à sélectionner l'horodatage sous forme de chaîne à la place afin que le pilote PDO ne sache pas qu'il s'agit vraiment d'un horodatage, simplement en faisant $query->selectRaw(DB::raw("CONCAT(my_date_column) as my_date_column"))
Cependant, cela signifie que vous ne pouvez pas utiliser la sélection par défaut pour tous les champs, de sorte que l'interrogation devient un véritable casse-tête. Vous devez également remplacer getDateFormat sur le modèle.
// override to include micro seconds when dates are put into mysql.
protected function getDateFormat()
{
return 'Y-m-d H:i:s.u';
}
Enfin, dans votre migration plutôt que nullableTimestamps, en dehors du rappel du schéma, faites :
DB::statement("ALTER TABLE `$tableName` ADD COLUMN created_at TIMESTAMP(3) NULL");
Notez que cet exemple était pour 3 décimales, mais vous pouvez en avoir jusqu'à 6 si vous le souhaitez, en changeant le 3 en 6 à deux endroits, dans la table alter et dans le sprintf et en ajustant également le multiplicateur * 1000 à 1000000 pour 6.
J'espère qu'un jour PHP PDO sera mis à jour pour résoudre ce problème, mais cela fait plus de 5 ans et rien n'a changé, donc je n'ai plus d'espoir. Si vous êtes intéressé par les détails, consultez ce rapport de bogue :http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format -des-champs-dateheure J'ai trouvé ce lien dans cette autre réponse qui pourrait vous aider à mieux comprendre le problème :https://stackoverflow. com/a/22990991/259521
PHP montre vraiment son âge ces derniers temps, et je considérerais ce problème comme l'une des raisons pour lesquelles j'envisage de passer au Node.js plus moderne.