概要
【PHP/Laravel】プログラミング初学者によるアプリケーション開発
https://qiita.com/AlpacaFace/items/b8e05a3da599815d8e31
上記トークアプリ開発の設計を説明します。
対象機能
- posts(投稿)テーブルのマイグレーションとシーダー作成
基本設計
-
Adminerに作成するDBテーブルのうち、posts(投稿)テーブルについて、
マイグレーション実行とシーダー作成を行う。 -
マイグレーションファイルを新規作成する。
-
Postモデルを作成する。
-
postsテーブルにはユーザの投稿内容を格納する。
-
投稿内容は文字列で140文字とする。バリデーションチェックのため、テスト用の投稿内容を160文字とする。
-
投稿内容の文字数制限はバリデーションファイルに記載する。
-
postsテーブルのテスト用投稿数は、テスト用ユーザ10人が1人1投稿行うものとし、10通りの投稿内容を用意する。
詳細設計
- マイグレーション実行
-
postsマイグレーションファイルの新規作成
$ docker exec -it laravel_app bash
#ls
#cd laravelapp ; pwd
#php artisan make:migration create_posts_table --create=posts
#exit -
ファイル編集
・database/migrations/xxx_create_posts_table.php(中略) public function up() { Schema::create(‘posts', function (Blueprint $table) { $table->bigIncrements('id'); $table->bigInteger('user_id')->unsigned()->index(); $table->text(‘content’); $table->timestamps(); }); } (中略) public function down() { Schema::dropIfExists(‘posts'); }
-
マイグレーション実行
$ php artisan migrate
- Postモデル作成
-
Postモデル作成
$ php artisan make:model Post -
ファイル編集
・ app/Post.php(中略) class Post extends Model { use SoftDeletes; public function user() { return $this->belongsTo(User::class); } }
- シーダー作成
-
シーダーファイル作成
$ php artisan make:seeder PostsTableSeeder -
ファイル編集
・ database/seeds/PostsTableSeeder.php(中略) public function run() { for ($i = 1; $i <= 10; $i++) { DB::table('posts')->insert([ 'user_id' => $i, 'content' => 'テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。テスト投稿です。', 'created_at' => now(), 'updated_at' => now() ]); } }
-
posts(投稿)をDBへ登録するシーダーコマンドを実行
$ php artisan db:seed --class=PostsTableSeeder