استفاده از Eloquent ORM در PHP: یک راهنمای جامع
Eloquent ORM (Object-Relational Mapper) یک جزء قدرتمند و محبوب در فریمورک Laravel PHP است، اما میتوان آن را به صورت مستقل نیز در پروژههای PHP استفاده کرد. Eloquent به شما امکان میدهد با پایگاه داده به روشی شیءگرا تعامل داشته باشید، که این امر توسعه و نگهداری کد را بسیار آسانتر میکند. این مقاله به بررسی عمیق Eloquent ORM، مفاهیم کلیدی، مزایا، و نحوه استفاده از آن در پروژههای PHP میپردازد.
مفاهیم کلیدی Eloquent ORM
قبل از شروع، درک مفاهیم کلیدی Eloquent ضروری است:
- مدل (Model): نماینده یک جدول در پایگاه داده است. هر مدل شامل ویژگیها (attributes) و متدهایی است که برای تعامل با دادههای مربوط به آن جدول استفاده میشوند.
- ویژگی (Attribute): معادل یک ستون در جدول پایگاه داده است.
- رابطه (Relationship): نحوه ارتباط بین مدلها را تعریف میکند (مانند یک به یک، یک به چند، چند به چند).
- کوئری بیلدِر (Query Builder): یک روش انعطافپذیر برای ساخت کوئریهای SQL به صورت برنامهنویسی.
- مجموعه (Collection): یک شیء که شامل مجموعهای از مدلها است که از یک کوئری برگردانده شدهاند.
مزایای استفاده از Eloquent ORM
استفاده از Eloquent ORM مزایای متعددی دارد:
- خوانایی و نگهداری کد: Eloquent کد را خواناتر و قابل فهمتر میکند، زیرا شما با اشیاء و متدها کار میکنید، نه با کوئریهای SQL پیچیده.
- امنیت: Eloquent به طور خودکار از حملات SQL Injection جلوگیری میکند، زیرا ورودیها را به درستی sanitize میکند.
- انعطافپذیری: Eloquent بسیار انعطافپذیر است و به شما امکان میدهد کوئریهای پیچیده را به راحتی بسازید.
- تستپذیری: Eloquent کد را آسانتر قابل تست میکند، زیرا میتوانید مدلها را به صورت جداگانه تست کنید.
- قابلیت استفاده مجدد: مدلها را میتوان در چندین قسمت از برنامه استفاده کرد.
نصب و پیکربندی Eloquent ORM
برای استفاده از Eloquent ORM، ابتدا باید آن را نصب و پیکربندی کنید. اگر از Laravel استفاده میکنید، Eloquent به طور پیشفرض نصب شده است. در غیر این صورت، میتوانید Eloquent را با استفاده از Composer نصب کنید:
composer require illuminate/database
سپس، باید فایل پیکربندی پایگاه داده (config/database.php) را تنظیم کنید تا اطلاعات اتصال به پایگاه داده خود را مشخص کنید. این اطلاعات شامل نام میزبان، نام پایگاه داده، نام کاربری، و رمز عبور است.
تعریف مدلها
برای تعریف یک مدل، باید یک کلاس PHP ایجاد کنید که از کلاس IlluminateDatabaseEloquentModel ارث ببرد. نام کلاس باید با نام جدول مربوطه در پایگاه داده مطابقت داشته باشد (به صورت Singular). به عنوان مثال، برای جدول users، باید یک کلاس به نام User ایجاد کنید.
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class User extends Model {
//
}
به طور پیشفرض، Eloquent فرض میکند که نام جدول مربوط به مدل users است. اگر نام جدول متفاوت است، میتوانید آن را در ویژگی $table مدل مشخص کنید:
protected $table = 'my_users_table';
تعامل با پایگاه داده
Eloquent ORM روشهای مختلفی را برای تعامل با پایگاه داده فراهم میکند:
دریافت دادهها
all(): تمام رکوردهای جدول را برمیگرداند.find($id): رکورد با شناسه مشخص شده را برمیگرداند.where($column, $operator, $value): رکوردها را بر اساس شرط مشخص شده فیلتر میکند.first(): اولین رکوردی که با شرط مشخص شده مطابقت دارد را برمیگرداند.get(): تمام رکوردهایی که با شرط مشخص شده مطابقت دارند را برمیگرداند.
مثال:
$users = User::all(); // دریافت تمام کاربران
$user = User::find(1); // دریافت کاربر با شناسه 1
$users = User::where('age', '>', 18)->get(); // دریافت کاربران بالای 18 سال
ایجاد دادهها
create($attributes): یک رکورد جدید در جدول ایجاد میکند و ویژگیهای مشخص شده را تنظیم میکند.
مثال:
$user = User::create([
'name' => 'John Doe',
'email' => 'john.doe@example.com',
'password' => bcrypt('secret')
]);
بهروزرسانی دادهها
find($id): رکورد با شناسه مشخص شده را پیدا میکند.update($attributes): ویژگیهای رکورد را بهروزرسانی میکند.save(): تغییرات را در پایگاه داده ذخیره میکند.
مثال:
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save(); // ذخیره تغییرات در پایگاه داده
حذف دادهها
delete(): رکورد را از پایگاه داده حذف میکند.
مثال:
$user = User::find(1);
$user->delete(); // حذف کاربر با شناسه 1
رابطهها (Relationships)
Eloquent ORM از رابطههای مختلفی پشتیبانی میکند که به شما امکان میدهد ارتباط بین مدلها را تعریف کنید:
- یک به یک (One-to-One): یک رکورد در یک جدول با یک رکورد در جدول دیگر مرتبط است.
- یک به چند (One-to-Many): یک رکورد در یک جدول با چندین رکورد در جدول دیگر مرتبط است.
- چند به چند (Many-to-Many): چندین رکورد در یک جدول با چندین رکورد در جدول دیگر مرتبط است.
تعریف رابطهها با استفاده از متدهای hasOne()، hasMany()، و belongsToMany() انجام میشود.
کوئری بیلدِر (Query Builder)
کوئری بیلدِر Eloquent به شما امکان میدهد کوئریهای SQL را به صورت برنامهنویسی بسازید. این روش انعطافپذیری بیشتری را نسبت به استفاده مستقیم از متدهای Eloquent فراهم میکند.
مثال:
$users = DB::table('users')
->where('age', '>', 18)
->orderBy('name')
->get();
نتیجهگیری
Eloquent ORM یک ابزار قدرتمند و انعطافپذیر برای تعامل با پایگاه داده در PHP است. با استفاده از Eloquent، میتوانید کد خود را خواناتر، قابل نگهداریتر، و امنتر کنید. این مقاله یک نمای کلی از مفاهیم کلیدی، مزایا، و نحوه استفاده از Eloquent ORM را ارائه داد. با تمرین و تجربه، میتوانید از تمام قابلیتهای Eloquent برای ساخت برنامههای PHP با کیفیت بالا استفاده کنید.
