Laravel Eloquent Accessors এবং Mutators — সহজ বাংলা টিউটোরিয়াল | Part 16

Abu Sayed
2 min readFeb 23, 2024

--

Laravel Eloquent ORM এর Accessors এবং Mutators ব্যবহার করে মডেল ডাটা ম্যানিপুলেট ও ফর্ম্যাট করার উদাহরণসহ সহজ বাংলা টিউটোরিয়াল।

প্রিয় বন্ধু, আমি আপনাকে Eloquent Accessors এবং Mutators সম্পর্কে শিক্ষা দেওয়ার চেষ্টা করবো।

Eloquent Accessors

Accessors হল একটি সুবিধা যা আপনাকে মডেল প্রপার্টিগুলোকে ম্যানিপুলেট বা ফর্ম্যাট করতে দেয় যখন সেগুলো অ্যাক্সেস করা হয়।

উদাহরণস্বরূপ:

class User extends Model {
  public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}$user = User::find(1);$firstName = $user->first_name; // accessor applied

এখানে first_name কলামটিকে প্রথম অক্ষরটি ক্যাপিটালাইজ করে প্রদর্শন করা হচ্ছে।

Eloquent Mutators

Mutators হল এমন একটি সুবিধা যা ডাটা সেট হওয়ার আগে মডেলের অ্যাট্রিবিউটগুলো পরিবর্তন বা ম্যানিপুলেট করে।

উদাহরণ:

class User extends Model {
  public function setFirstNameAttribute($value)
{
$this->attributes['first_name'] = strtolower($value);
}
}$user = new User;
$user->first_name = "JOHN";
$user->save(); // first_name converted to lowercase

এখানে first_name কে লোয়ারকেসে কনভার্ট করে সেভ করা হচ্ছে।

Accessors এবং Mutators এর সুবিধাসমূহ

  • ডাটা ফর্ম্যাটিং এবং স্যানিটাইজেশন।
  • এনক্রিপশন এবং ডিক্রিপশন।
  • ভ্যালিডেশন এবং স্যানিটাইজেশন।
  • ডাটাকে কাস্টম ফর্ম্যাটে প্রদর্শন।

তাই Accessors এবং Mutators দিয়ে আপনি মডেল ডাটাকে সহজেই ম্যানিপুলেট এবং ফর্ম্যাট করতে পারেন।

একটি সহজ উদাহরণ

আসুন আমরা User মডেলের জন্য একটি Accessor ও Mutator তৈরি করি।

class User extends Model {
  public function getNameAttribute($value) {
return ucfirst($value);
}

public function setNameAttribute($value) {
$this->attributes['name'] = strtolower($value);
}
}

এখানে getNameAttribute হল একটি Accessor যা name কে প্রথম অক্ষর ক্যাপিটাল করে দেখায়।

অন্যদিকে setNameAttribute হল একটি Mutator যা name কে লোয়ারকেসে কনভার্ট করে সেভ করে।

এর ফলে ডাটা গেট এবং সেট করার সময় আমরা সহজেই ম্যানিপুলেশন করতে পারি।

আশা করি এই সহজ উদাহরণের মাধ্যমে আপনি Accessors ও Mutators এর ধারণা বুঝতে পেরেছেন। এগুলো খুব কাজের জিনিস যা আপনার মডেল ডাটা নিয়ে কাজ করাকে সহজ করে তুলবে।

--

--

Abu Sayed

Bangladeshi Full Stack Web Dev, Sys Admin & DevOps Engineer. Skills: Data analysis, SQL, Kubernetes. Python, PHP & Laravel. Me on: bd.linkedin.com/in/imabusayed