Laravel5.5 搭建簡單的社群(二)--建立資料
阿新 • • 發佈:2019-01-09
宣告:此篇筆記記錄的是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();
檢視資料庫,是否生成了資料。