Не можете, защото PHP PDO драйверът не поддържа частични секунди в времеви печати. Заобикалянето е вместо това да изберете клеймото за време като низ, така че PDO драйверът да не знае, че всъщност е времеви печат, просто като направите $query->selectRaw(DB::raw("CONCAT(my_date_column) as my_date_column"))
това обаче означава, че не можете да използвате избора по подразбиране за всички полета, така че заявката се превръща в истинска болка. Също така трябва да замените getDateFormat на модела.
// override to include micro seconds when dates are put into mysql.
protected function getDateFormat()
{
return 'Y-m-d H:i:s.u';
}
Накрая във вашата миграция, а не nullableTimestamps, извън обратното извикване на схемата направете:
DB::statement("ALTER TABLE `$tableName` ADD COLUMN created_at TIMESTAMP(3) NULL");
Обърнете внимание, че този пример беше за 3 знака след десетичната запетая, но можете да имате до 6, ако желаете, като промените 3 на 6 на две места, в таблицата за промяна и в sprintf и също така коригирате множителя * 1000 до 1000000 за 6.
Надяваме се някой ден PHP PDO да бъде актуализиран, за да поправи това, но са минали повече от 5 години и нищо не се е променило, така че нямам надежди. В случай, че се интересувате от подробности, вижте този доклад за грешка:http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format -полета на дата и час Намерих тази връзка в този друг отговор, която може да ви помогне да разберете по-добре проблема:https://stackoverflow. com/a/22990991/259521
PHP наистина показва възрастта си напоследък и бих смятал този проблем за една от причините да обмисля преминаване към по-модерния Node.js.