Open clnr073 opened 11 months ago
これまでのデータベースの設計では、タグの色を指定するためにtags
テーブルとcolors
テーブルのリレーションシップを定義していたが、タグとは無関係に聖句そのものに色を指定できるようにしたい。
tags
テーブルのcolor_id
カラムを削除する。colors
テーブルのuser_id
カラムを削除する。notes
テーブルにcolor_id
カラムを追加する。color_id
はcolors
テーブルのid
の外部キー。モデルにnotes
とcolors
の1対多のリレーションシップを定義する。colors
テーブルに5つのRGBAコードを挿入する。
概要
いくつかのデータベース構造の修正に基づき、マイグレーションを実行する。
notesテーブルとcommentsテーブルが多対多の関係にあったため、これを1対多の関係にしたい: -notesテーブルとcommentsテーブルの中間テーブルを削除する。 -同様に、questionsテーブルとcommentsテーブルの中間テーブルも削除する。
commentsテーブルがnotesテーブルとquestionsテーブル両方のコメントを持つような構造であったが、これをそれぞれのテーブルについて分割する: -commetsテーブルをnotesテーブルのコメントをinsertするために活用する。 -questionsテーブルのコメントをinsertするテーブルを新たに作成する。commentsテーブルとの名称の重複を避けるため、answersテーブルとする。 -新しく作ったテーブルについてモデルを作成する。
変更点
既存のテーブルのうち、削除するテーブルについてマイグレーションファイルを作成する。 php artisan make:migration drop_comment_note_table php artisan make:migration drop_comment_question_table
upメソッドに次を追加: Schema::dropIfExists('tableName');
新規テーブル作成の及び特定のテーブルにカラム追加 php artisan make:migration add_note_id_to_comments_table --table=comments
質問の回答をinsertするため、answersテーブルを作成。answersテーブルとtestamentsテーブルのリレーションシップも定義するため、中間テーブルを作成。 php artisan make:migration create_answers_table php artisan make:migration create_answer_testament_table
おまけ:questionが複数のtagを持てるようにするため、中間テーブルを作成 php artisan make:migration create_question_tag_table
マイグレーションを実行
answersテーブルのモデルAnswerを作成 php artisan make:model Answer