TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #301 319
فصل چهار - مدل‌ها و Eloquent ORM

بخش دوم - مدل ها - قسمت اول


برای ایجاد یک مدل، کافی است دستور زیر اجرا کنید:
php artisan make:model User


این دستور یک فایل جدید به نام User.php در پوشه app/Models ایجاد می‌کند که به شکل زیر است:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
//
}


هر مدل در لاراول به صورت پیش‌فرض به یک جدول پایگاه داده مرتبط است. لاراول با استفاده از قواعد نامگذاری، نام جدول را از نام مدل استخراج می‌کند. به طور مثال، مدل User به جدول users متصل می‌شود.
نام مدل باید به صورت مفرد (User) و نام جدول به صورت جمع (users) باشد.

اگر نام جدول شما متفاوت باشد، می‌توانید آن را به صورت دستی مشخص کنید:
class User extends Model
{
protected $table = 'table_name';
}


لاراول یک ویژگی امنیتی به نام Mass Assignment Protection دارد که به شما اجازه می‌دهد فیلدهایی که می‌توانند به صورت گروهی پر شوند را مشخص کنید. این کار با استفاده از ویژگی $fillable انجام می‌شود:
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}


با استفاده از این ویژگی، فقط فیلدهای name، email و password می‌توانند به صورت گروهی پر شوند. این کار مانع از حملات احتمالی امنیتی می‌شود.

از این پس می توانید با استفاده از کلاس User با جدول users ارتباط برقرار کنید.

در این قسمت با متد های اصلی برای عملیات CRUD آشنا می شویم.

1- متد all
متد all تمام رکوردهای یک جدول را برمی‌گرداند. این متد بدون هیچ شرطی، تمامی رکوردها را برمی‌گرداند.

$users = User::all();


این کد تمامی رکوردهای جدول users را برمی‌گرداند. به خاطر داشته باشید که اگر تعداد رکوردها زیاد باشد، استفاده از این متد می‌تواند به عملکرد پایگاه داده آسیب بزند.

2- متد find
متد find برای یافتن یک رکورد بر اساس مقدار کلید اصلی (Primary Key) آن استفاده می‌شود. این متد یک رکورد را به عنوان شیء مدل بازمی‌گرداند یا اگر رکوردی پیدا نشود، مقدار null برمی‌گردد.

$user = User::find(1);


این کد کاربری با id برابر با ۱ را از جدول users پیدا می‌کند.

3- متد where
متد where برای اضافه کردن شرط به پرس و جو استفاده می‌شود. این متد یک یا چند شرط را برای محدود کردن نتایج اعمال می‌کند.

$adultUsers = User::where('age', '>', 18)->get();


این کد تمام کاربرانی که سن آن‌ها بالاتر از ۱۸ سال است را برمی‌گرداند.
می‌توان از چندین شرط where پشت سر هم استفاده کرد:
$filteredUsers = User::where('status', 'active')->where('age', '>', 18)->get();


این کد کاربرانی را برمی‌گرداند که هم فعال هستند و هم سن آن‌ها بالاتر از ۱۸ سال است.
نکته: به طور پیشفرض اگر دو پارامتر به متد where داده شود از اپراتور = استفاده می کند، مگر ذکر شود.

4- متد orWhere
متد orWhere برای اضافه کردن شرط‌های OR به پرس و جو استفاده می‌شود. این متد در جایی به کار می‌رود که می‌خواهیم نتایج با یکی از شرط‌ها تطابق داشته باشند.

$users = User::where('status', 'active')->orWhere('age', '>', 18)->get();


این کد کاربرانی را برمی‌گرداند که یا فعال هستند یا سن آن‌ها بالاتر از ۱۸ سال است.

5- متد get
متد get برای بازیابی مجموعه‌ای از رکوردها با شرایط خاص استفاده می‌شود. این متد بعد از استفاده از یک یا چند متد شرطی (مانند where و غیره) به کار می‌رود و نتایج را به صورت یک Collection برمی‌گرداند.

6- متد delete
متد delete برای حذف یک رکورد یا چندین رکورد از پایگاه داده استفاده می‌شود. برای حذف یک رکورد، ابتدا باید آن را پیدا کرده و سپس متد delete را روی آن اجرا کنیم.
$user = User::find(1)->delete();


این کد کاربری با id برابر با ۱ را از جدول users حذف می‌کند.

7- متد update
متد update برای به‌روزرسانی یک یا چند فیلد از یک رکورد استفاده می‌شود.
User::find(1)->update([
"username" => "John Smith"
]);

این کد نام کاربری با id برابر با ۱ را به 'John Smith' تغییر می‌دهد.

متد create:
متد create برای ایجاد یک رکورد جدید در پایگاه داده استفاده می‌شود. این متد به یک آرایه از داده‌ها نیاز دارد که باید با ویژگی‌های $fillable مدل تطابق داشته باشند.
$user = User::create([
'name' => 'Alice Doe',
'email' => 'alice@example.com',
'password' => bcrypt('password123')
]);

این کد یک رکورد جدید با موارد داده شده ایجاد می کند.

در قسمت های بعدی با سایر متد ها آشنا می شویم.

#laravel #لاراول #فصل_۴
@AmirhDeveloper
.
  • 👍 1
  • 🔥 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →