आप नहीं कर सकते क्योंकि PHP 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 को बदलकर, परिवर्तन तालिका में और स्प्रिंटफ में और 6 के लिए गुणक * 1000 से 100000 को भी समायोजित कर सकते हैं।
उम्मीद है कि किसी दिन PHP पीडीओ को इसे ठीक करने के लिए अपडेट किया जाएगा, लेकिन यह 5 साल से अधिक हो गया है और कुछ भी नहीं बदला है, इसलिए मुझे मेरी उम्मीद नहीं है। यदि आप विवरण में रुचि रखते हैं, तो यह बग रिपोर्ट देखें:http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format -ऑफ-डेटटाइम-फ़ील्ड मुझे यह लिंक इस अन्य उत्तर में मिला है जो आपको इस मुद्दे को और अधिक समझने में मदद कर सकता है:https://stackoverflow। कॉम/ए/22990991/259521
PHP वास्तव में हाल ही में अपनी उम्र दिखा रहा है, और मैं इस मुद्दे को अधिक आधुनिक Node.js पर जाने पर विचार करने के अपने कारणों में से एक मानूंगा।