Det kan du ikke, fordi PHP PDO-driveren ikke understøtter brøkdele af sekunder i tidsstempler. En løsning er at vælge tidsstemplet som en streng i stedet, så PDO-driveren ikke ved, at det i virkeligheden er et tidsstempel, blot ved at gøre $query->selectRaw(DB::raw("CONCAT(my_date_column) as my_date_column"))
Dette betyder dog, at du ikke kan bruge standardvalg for alle felter, så forespørgsel bliver en reel smerte. Du skal også tilsidesætte getDateFormat på modellen.
// override to include micro seconds when dates are put into mysql.
protected function getDateFormat()
{
return 'Y-m-d H:i:s.u';
}
Endelig i din migrering i stedet for nullableTimestamps, uden for Schema callback skal du gøre:
DB::statement("ALTER TABLE `$tableName` ADD COLUMN created_at TIMESTAMP(3) NULL");
Bemærk, at dette eksempel var for 3 decimaler, men du kan have op til 6, hvis du vil, ved at ændre 3'eren til en 6'er to steder, i altertabellen og i sprintf'en og også justere multiplikatoren * 1000 til 1000000 for 6.
Forhåbentlig en dag vil PHP PDO blive opdateret for at løse dette, men det er over 5 år siden, og intet er ændret, så jeg har ikke mine forhåbninger. Hvis du er interesseret i detaljerne, se denne fejlrapport:http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format -of-datetime-felter Jeg fandt det link i dette andet svar, som måske kan hjælpe dig med at forstå problemet bedre:https://stackoverflow. com/a/22990991/259521
PHP har virkelig vist sin alder på det seneste, og jeg vil betragte dette problem som en af mine grunde til at overveje at flytte til den mere moderne Node.js.