1. 程式人生 > >Laravel5.5 搭建簡單的社群(二)--建立資料

Laravel5.5 搭建簡單的社群(二)--建立資料

宣告:此篇筆記記錄的是laravist網站上的視訊教程,有興趣可以去逛逛。

在做好準備工作後我們就來建立資料表和資料,首先先建立discussions表:

php artisan make:migration create_discussions_table --create=discussions
複製程式碼
    public function up()
    {
        Schema::create('discussions', function (Blueprint $table) {
            $table->increments('id');
            
$table->string('title'); // 帖子的標題 $table->text('body'); // 帖子的內容 $table->integer('user_id')->unsigned(); // 這篇帖子的作者是誰 $table->integer('last_user_id')->unsigned(); // 這篇帖子最後是由誰更新的 // 宣告user_id外來鍵 $table->foreign('user_id')
->references('id') ->on('users') ->onDelete('cascade'); $table->timestamps(); }); }
複製程式碼

修改users表的遷移檔案,新增一個avatar欄位:

複製程式碼
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table
->increments('id'); $table->string('name'); $table->string('avatar'); $table->string('email')->unique(); $table->string('password', 60); $table->rememberToken(); $table->timestamps(); }); }
複製程式碼

執行migrate,建立discussion模型:

php artisan migrate
php artisan make:model Discussion

使用factory建立user測試資料

先進入User模型中,在fillable(白名單)陣列中新增我們新加入的欄位 avatar:

protected $fillable = ['name', 'email', 'password', 'avatar'];

進入ModelFactory.php中修改建立User模型的方法:

複製程式碼
$factory->define(App\User::class, function ($faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->email,
        // 新增avatar的生成方法
        'avatar' => $faker->imageUrl(256,256),
        'password' => str_random(10),
        'remember_token' => str_random(10),
    ];
});
複製程式碼

進入tinker中批量生成使用者:

php artisan tinker               
>>> factory('App\User',10)->create();

檢視資料庫,是否生成了資料。

使用factory建立discussion測試資料

在Discussion模型中建立白名單陣列:

class Discussion extends Model
{
    protected $fillable = ['title', 'body', 'user_id', 'last_user_id'];
}

在ModelFactory建立新的方法:

複製程式碼
$factory->define(App\Discussion::class, function ($faker) {
    // lists()方法是列出某一列的值
    $user_id_array = \App\User::lists('id')->toArray();
    return [
        'title' => $faker->sentence,
        'body' => $faker->paragraph,
        'user_id' => $faker->randomElement($user_id_array),
        'last_user_id' => $faker->randomElement($user_id_array),
    ];
});
複製程式碼

在tinker中批量生成資料:

php artisan tinker
>>> factory('App\Discussion',30)->create();

檢視資料庫,是否生成了資料。