Laravel-এ created_at
এবং updated_at
এর জন্য ডিফল্টভাবে timestamp
টাইপ ব্যবহার করা হলেও, ভবিষ্যতে 2038 সালের সীমাবদ্ধতা (Year 2038 problem) এড়ানোর জন্য datetime
টাইপ ব্যবহার করা একটি ভালো সমাধান। datetime
টাইপ সময়ের ক্ষেত্রে 9999 সাল পর্যন্ত সাপোর্ট দেয়, যা timestamp
এর সীমাবদ্ধতা থেকে অনেক বেশি।
আপনার মাইগ্রেশনে timestamps()
ব্যবহার করলে Laravel ডিফল্টভাবে timestamp
টাইপ তৈরি করে। তবে, আপনি datetime
টাইপ ব্যবহার করতে চাইলে মাইগ্রেশনে ম্যানুয়ালি datetime
ফিল্ড ডিফাইন করতে পারেন:
$table->dateTime('created_at')->nullable();
$table->dateTime('updated_at')->nullable();
এছাড়া, যদি আপনি পুরো অ্যাপ্লিকেশনে ডিফল্ট টাইপ হিসেবে datetime
ব্যবহার করতে চান, তাহলে timestamps()
এর পরিবর্তে datetime
কলামগুলো নিজে ডিফাইন করা সবচেয়ে ভালো।
উদাহরণ:
$table->dateTime('created_at')->nullable();
$table->dateTime('updated_at')->nullable();
timestamps()
কাস্টমাইজেশন
Laravel timestamps()
ফাংশনের সাথে সরাসরি datetime
টাইপ ব্যবহার সাপোর্ট করে না, তবে আপনি এটি ওভাররাইড করতে পারেন বা প্রতিটি মাইগ্রেশনে নিজে ম্যানুয়ালি ডিফাইন করতে পারেন।
Eloquent Configuration
Eloquent মডেলে created_at
এবং updated_at
কাস্টম ফিল্ডগুলো সাপোর্ট করবে যদি সেগুলো datetime
টাইপের হয়।
protected $casts = [
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
সারসংক্ষেপে, যদি আপনি Laravel-এ দীর্ঘমেয়াদি সমাধান চান, তাহলে datetime
টাইপ ব্যবহার করাই উত্তম।