@aalireza439
تو لاراول قسمت migrations میشه :
جدول هایی با مقدار اولیه ساخت؟
یعنی بعد این migration اجرا شد تو جدول مواردی وارد(INSERT) شده باشه؟
Migration یک قابلیت داری به نام Seed نحوه کارش هم اینطوره بعد اینکه جدول ات رو ایجاد کرد و فیلد هاش هم رو تعیین کردی و بعد دیتابس ات رو تغذیه کنی.
برای مثال یک جدول برای خبر ایجاد میکنیم
کد:
> php artisan make:migration create_news_table
بعدش تنظیم فیلد هایی که تو این مسیر Migration برامون ایجاد کرده:
کد:
laravel/database/migrations/2015_08_23_121405_create_news_table.php
به این صورت
PHP:
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateNews extends Migration {
public function up() {
Schema::create( 'news' , function(Blueprint $table) {
$table->increments( 'id' );
$table->string( 'url' )->unique();
$table->string( 'headline' );
$table->text( 'story' );
$table->timestamps();
$table->softDeletes();
} );
}
public function down() {
Schema::drop( 'news' );
}
}
بعد هم اجرای دستور
تا ایجا ما جدولمون و با فیلد هاشون رو ایجاد کردیم ، حالا برای ایجاد یکسری دیتا اینکارها رو میکنیم.
اول از پیشنهاد میشه برای اینکار از Eloquent استفاده کنیم
خوب برای اینکار نیاز هست که یک مدل ایجاد کنیم ، دو راه داره میتونی خودت دستی مدل رو (News.php) ایجاد کنی تو این مسیر App یا از این دستور استفاده کنی:
کد:
php artisan make:model News
فایل مدل رو به این صورت تنظیم میکنیم (واضح هست نیازی به توضیح نداره)
PHP:
namespace App;
use Illuminate\Database\Eloquent\Model;
class News extends Model {
protected $fillable = ['headline' , 'story'];
protected $hidden = ['id' , 'deleted_at'];
}
حالا اینجا باید Seeder رو تنظیم کنیم ، فایل پیشفرض تو این مسیر هست laravel/database/seeds/DatabaseSeeder.php
یک کپی ازش میگیری به این نام تغییر میدی NewsTableSeeder
بعد فایل های DatabaseSeeder.php و NewsTableSeeder.php رو به این صورت تنظیم میکنی (توضیحات این هم واضحه)
PHP:
// DatabaseSeeder.php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
public function run() {
Model::unguard();
// $this->call('UserTableSeeder');
$this->call( 'NewsTableSeeder' );
}
}
PHP:
// NewsTableSeeder.php
use Illuminate\Database\Seeder;
use App\News as News; // to use Eloquent Model
class NewsTableSeeder extends Seeder {
public function run() {
// clear table
News::truncate();
// add 1st row
News::create( [
'url' => 'news-url' ,
'headline' => 'News Headline' ,
'story' => 'The Story' ,
] );
// add 2nd row
News::create( [
'url' => 'second-url' ,
'headline' => 'Second Headline' ,
'story' => 'Second Story' ,
] );
}
}
بعد اینکارها نیاز هست که کلاس هامون رو اپدیت کنیم ، به دلیل اینکه 2 کلاس جدید ایجاد کردیم (NewsTableSeeder, News) با این دستور :
در آخر هم میتونیم دیتابس مون رو بهش دونه بدیم (Seed) با این دستور :
it's defined