Header Ads

Header ADS

Laravel Common Tropics

 

✅ ১. Route Model Binding

ব্যাখ্যা:
Laravel-এ Route Model Binding ব্যবহার করে আপনি route-এ থাকা ID বা slug দিয়ে সরাসরি মডেল instance পেতে পারেন।

উদাহরণ:


// Route Route::get('/user/{user}', function (App\Models\User $user) { return $user; });

এখানে {user} হলো রুট প্যারামিটার, এবং Laravel নিজেই User মডেল থেকে সেই ID’র ইউজারকে এনে $user হিসেবে পাস করবে।


✅ ২. Polymorphic Relationship

ব্যাখ্যা:
একটি মডেল একাধিক মডেল থেকে সম্পর্কিত ডেটা রাখতে পারে, যেমন – comments টেবিল posts এবং videos উভয়ের সাথে যুক্ত হতে পারে।

উদাহরণ:


// Comment Model public function commentable() { return $this->morphTo(); } // Post Model public function comments() { return $this->morphMany(Comment::class, 'commentable'); } // Video Model public function comments() { return $this->morphMany(Comment::class, 'commentable'); }

✅ ৩. Middleware Priority

ব্যাখ্যা:
Middleware-এর কার্যক্রমের অগ্রাধিকার (priority) কখনো কখনো গুরুত্বপূর্ণ হয়। যেমনঃ authentication আগে হবে, তারপর authorization।

app/Http/Kernel.php এ নির্ধারণ করা যায়:


protected $middlewarePriority = [ \App\Http\Middleware\Authenticate::class, \App\Http\Middleware\CheckRole::class, ];

✅ ৪. Eager Loading vs Lazy Loading

ব্যাখ্যা:

  • Lazy Loading: যখন প্রয়োজনে সম্পর্কিত ডেটা লোড হয়। (বেশি query হয়)

  • Eager Loading: শুরুতেই সম্পর্কিত সব ডেটা একসাথে লোড হয়।

উদাহরণ:


// Lazy Loading (Bad if used in loop) $users = User::all(); foreach ($users as $user) { echo $user->profile->bio; } // Eager Loading (Better) $users = User::with('profile')->get();

✅ ৫. N+1 Query Problem

ব্যাখ্যা:
যখন একটি loop এর ভিতরে প্রতিটি রেকর্ডের জন্য আলাদা query চলে, তখন performance কমে যায়।

ভুল:


$users = User::all(); foreach ($users as $user) { echo $user->profile->bio; }

সঠিক (Eager Loading):


$users = User::with('profile')->get();

✅ ৬. with() vs load() পার্থক্য

ব্যাখ্যা:

  • with() → Query করার সময় relationship সহ ডেটা নিয়ে আসে।

  • load() → Query করার পর ডেটাতে relationship attach করে।

উদাহরণ:


// with() use in query time $users = User::with('profile')->get(); // load() use after getting data $user = User::find(1); $user->load('profile');

✅ ৭. Pagination

ব্যাখ্যা:
Laravel এ pagination সহজেই করা যায় paginate() method ব্যবহার করে।

উদাহরণ:


$users = User::paginate(10);

Blade View:


{{ $users->links() }}

✅ ৮. Job & Queue System

ব্যাখ্যা:
যদি কোনো task (যেমন ইমেইল পাঠানো) background-এ করতে চান, তখন Job ও Queue ব্যবহার হয়।

Job তৈরি:


php artisan make:job SendWelcomeEmail

Job ক্লাসে:


public function handle() { Mail::to($this->user->email)->send(new WelcomeEmail($this->user)); }

Dispatch করা:


SendWelcomeEmail::dispatch($user);

No comments

Theme images by fpm. Powered by Blogger.