TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #361 335
فصل پنج - Migrations and Database

بخش سوم - Seeders


‏Seeder یکی از ابزارهای لاراول است که برای وارد کردن داده‌های اولیه یا نمونه به پایگاه داده استفاده می‌شود. این ابزار به توسعه‌دهندگان کمک می‌کند تا داده‌های لازم برای تست یا مقداردهی اولیه پایگاه داده را به صورت خودکار و سریع ایجاد کنند.

فرض کنید می‌خواهید جدول cities را با داده‌های اولیه شهرها پر کنید. این جدول ممکن است شامل نام شهرها و استان‌های آن‌ها باشد.

1- ایجاد Seeder
ابتدا Seeder جدیدی برای جدول شهرها ایجاد می‌کنیم، این کار به وسیله دستور زیر انجام می شود:
php artisan make:seeder CitySeeder


2- پر کردن Seeder
فایل database/seeders/CitySeeder.php را باز کرده و داده‌های اولیه را به صورت دستی وارد کنید:
namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\City;

class CitySeeder extends Seeder
{
public function run()
{
$cities = [
['name' => 'Tehran', 'province' => 'Tehran'],
['name' => 'Mashhad', 'province' => 'Khorasan Razavi'],
['name' => 'Isfahan', 'province' => 'Isfahan'],
['name' => 'Shiraz', 'province' => 'Fars'],
['name' => 'Tabriz', 'province' => 'East Azerbaijan'],
];

foreach ($cities as $city) {
City::create($city);
}
// Or using query builder:
//City::insert($cities);
}
}


3- اجرای Seeder
برای اجرای Seeder شهرها، از دستور زیر استفاده کنید:
php artisan db:seed --class=CitySeeder


یا برای اجرای تمامی سیدر ها:
php artisan db:seed


گاهی در محیط پروداکشن سیدر ها ممکن است برای محافط از آسیب داده ها اجرا نشوند، برای این کار می توان از فلگ —force استفاده کرد، اما مراقب داده های خود باشید:
php artisan db:seed --force


پس از اجرای Seeder، جدول cities با داده های مشخص شده پر خواهد شد.

این روش برای مقداردهی اولیه داده‌های ثابت مانند شهرها، دسته‌بندی‌ها، یا تنظیمات بسیار مفید است و در زمان تست یا توسعه پروژه استفاده می‌شود.

استفاده از فکتوری ها در سیدر:
همچنین می توانید یک فکتوری را در سیدر خود فراخوانی کنید و داده های تستی خود را از فکتوری ایجاد کنید:
# UserSeeder.php
public function run(): void
{
User::factory()
->count(50)
->hasPosts(1)
->create();
}


فراخوانی سیدر های اضافی در یک سیدر:
همچنین می توانید از متد call استفاده کنید و سیدر های دیگری را در سیدر خود فراخوانی و اجرا کنید:
# FolanSeeder.php
public function run(): void
{
$this->call([
UserSeeder::class,
PostSeeder::class,
CommentSeeder::class,
]);
}


بی صدا کردن رویداد های مدل:
درصورت اجرای سیدر و ایجاد رکورد ها، رویداد های مدل ها نیز فراخوانی می شوند، شما می توانید با استفاده از تریت WithoutModelEvents، می توانید مانع فراخوانی این سیدر ها شوید:
class DatabaseSeeder extends Seeder
{
use WithoutModelEvents;

public function run(): void
{
$this->call([
UserSeeder::class,
]);
}
}


#laravel #لاراول #فصل_۵
@AmirhDeveloper
.
  • ❤ 7
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 →