Laravel-এ TIMESTAMP এর পরিবর্তে DATETIME কেন ব্যবহার করবেন?

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 টাইপ ব্যবহার করাই উত্তম।

1 Like