مقاله

Fat Controller، N+1، env در کد، نادیده گرفتن validation، commit کردن .env و بقیه اشتباهاتی که در کد review واقعی دیده‌ام — با راه‌حل Laravel 12.

۱۵ اشتباه رایج مبتدیان Laravel — و راه‌حل در پروژه واقعی

۱۵ اشتباه رایج مبتدیان Laravel — و راه‌حل در پروژه واقعی

هر اشتباه در این لیست را حداقل یک‌بار در pull request واقعی دیده‌ام — بعضی از خودم در سال‌های اول. خبر خوب: Laravel ابزار اصلاح دارد؛ خبر بد: عادت غلط زود جا می‌افتد. اگر تازه شروع کرده‌اید، این متن کمک می‌کند همان اشتباهات پرتکرار را رد کنید.

۱. Fat Controller — همه منطق در Controller

مشکل: Controller ۳۰۰ خطی با query، mail و payment.

راه‌حل: Service یا Action class. Service Layer.

۲. N+1 Query

// بد
$posts = Post::all();
foreach ($posts as $post) {
    echo $post->category->name;
}

// خوب
$posts = Post::with('category')->get();

جزئیات: بهینه‌سازی کوئری.

۳. استفاده از env() خارج از config

// بد در کلاس
$key = env('API_KEY');

// خوب — در config/services.php و سپس config('services.api.key')

۴. Mass Assignment بدون $fillable/$guarded

class User extends Model
{
    protected $fillable = ['name', 'email', 'password'];
}

هرگز is_admin را از request بدون کنترل قبول نکنید.

۵. فراموش کردن @csrf در فرم

خطای 419 Page Expired — همیشه در Blade فرم POST.

۶. Route closure برای منطق سنگین

برای prototype OK؛ برای production به Controller/Service بروید. Routing.

۷. Query در Blade

{{-- بد --}}
@foreach(\App\Models\Post::all() as $post)

داده از Controller یا View Composer.

۸. ignore کردن Form Request

validation در Controller شلوغ می‌کند — StorePostRequest بسازید.

۹. hardcode URL به‌جای route()

<a href="{{ route('posts.show', $post) }}">

۱۰. migrate:fresh روی داده مهم

فقط local. production: migrate فقط.

۱۱. ذخیره رمز plain text

از Hash::make() و cast hashed در Model Laravel 10+.

۱۲. فایل upload بدون validation

mime type، size، storage خارج public — امنیت.

۱۳. sync بدون transaction برای عملیات چندجدولی

DB::transaction(function () {
    // order + items + payment
});

۱۴. تست ننوشتن

حداقل feature test برای login و یک flow حیاتی.

۱۵. کپی از Stack Overflow بدون فهم

کد باید با نسخه Laravel شما سازگار باشد — docs رسمی اولویت.

چطور عادت درست بسازیم؟

قبل از کد: چک‌لیست شروع. در code review این ۱۵ مورد را ببینید. با Git کوچک commit کنید.

جمع‌بندی

اشتباه بخشی از یادگیری است؛ تکرار در production نیست. سوال دارید؟ تماس یا مقالات عمیق‌تر Eloquent در اجراهای بعدی.