Dat kan niet omdat het PHP PDO-stuurprogramma geen fractionele seconden in tijdstempels ondersteunt. Een tijdelijke oplossing is om in plaats daarvan de tijdstempel als een tekenreeks te selecteren, zodat de PDO-driver niet weet dat het een echte tijdstempel is, simpelweg door $query->selectRaw(DB::raw("CONCAT(my_date_column) as my_date_column"))
dit betekent echter dat u de standaardselectie niet voor alle velden kunt gebruiken, dus het opvragen wordt een echte pijn. U moet ook getDateFormat op het model overschrijven.
// override to include micro seconds when dates are put into mysql.
protected function getDateFormat()
{
return 'Y-m-d H:i:s.u';
}
Eindelijk in uw migratie in plaats van nullableTimestamps, buiten de Schema-callback:
DB::statement("ALTER TABLE `$tableName` ADD COLUMN created_at TIMESTAMP(3) NULL");
Merk op dat dit voorbeeld voor 3 decimalen was, maar je kunt er maximaal 6 hebben als je wilt, door de 3 op twee plaatsen in een 6 te veranderen, in de alter-tabel en in de sprintf en ook de vermenigvuldiger * 1000 aan te passen tot 1000000 voor 6.
Hopelijk zal PHP PDO op een dag worden bijgewerkt om dit op te lossen, maar het is meer dan 5 jaar geleden en er is niets veranderd, dus ik heb geen hoop. Als je geïnteresseerd bent in de details, bekijk dan dit bugrapport:http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format -of-datetime-fields Ik vond die link in dit andere antwoord dat je misschien kan helpen het probleem beter te begrijpen:https://stackoverflow. com/a/22990991/259521
PHP laat de laatste tijd echt zijn leeftijd zien en ik zou dit probleem als een van mijn redenen beschouwen om over te stappen naar het modernere Node.js.