LoginSignup
0
0

<設計>posts(投稿)テーブルのマイグレーションとシーダー作成

Last updated at Posted at 2023-07-30

概要

【PHP/Laravel】プログラミング初学者によるアプリケーション開発
https://qiita.com/AlpacaFace/items/b8e05a3da599815d8e31

上記トークアプリ開発の設計を説明します。

対象機能

  • posts(投稿)テーブルのマイグレーションとシーダー作成

基本設計

  • Adminerに作成するDBテーブルのうち、posts(投稿)テーブルについて、
    マイグレーション実行とシーダー作成を行う。

  • マイグレーションファイルを新規作成する。

  • Postモデルを作成する。

  • postsテーブルにはユーザの投稿内容を格納する。

  • 投稿内容は文字列で140文字とする。バリデーションチェックのため、テスト用の投稿内容を160文字とする。

  • 投稿内容の文字数制限はバリデーションファイルに記載する。

  • postsテーブルのテスト用投稿数は、テスト用ユーザ10人が1人1投稿行うものとし、10通りの投稿内容を用意する。

詳細設計

  • マイグレーション実行
  1. postsマイグレーションファイルの新規作成
    $ docker exec -it laravel_app bash
    #ls
    #cd laravelapp ; pwd
    #php artisan make:migration create_posts_table --create=posts
    #exit

  2. ファイル編集
    ・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');
         }
    
  3. マイグレーション実行
    $ php artisan migrate


  • Postモデル作成
  1. Postモデル作成
    $ php artisan make:model Post

  2. ファイル編集
    ・ app/Post.php

     (中略)
      		class Post extends Model
      		{
      		    use SoftDeletes;
      		    public function user()
      		    {
      		        return $this->belongsTo(User::class);
      		    }
      		}
    

  • シーダー作成
  1. シーダーファイル作成
    $ php artisan make:seeder PostsTableSeeder

  2. ファイル編集
    ・ 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()
                 ]);
             } 
         }
    
  3. posts(投稿)をDBへ登録するシーダーコマンドを実行
    $ php artisan db:seed --class=PostsTableSeeder

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0