iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
1
Software Development

30天完成家庭任務平台系列 第 4

30天完成家庭任務平台:第四天

  • 分享至 

  • xImage
  •  

家庭任務平台中主要使用了使用者,計畫,任務,活動,個人資料這五者的關係分別為:

  • 使用者:可以創建計畫或者被邀請參加計畫。
  • 計畫:可以創建分配給使用者的任務。
  • 任務:紀錄承擔任務的使用者。
  • 使用者與計畫/任務:由於一個計畫可以有多個使用者,包含創建或被邀請加入計畫中的使用者,所以不同使用者可以對計畫或任務做修改等行為,這些行為紀錄就是該計畫的活動。
  • 個人資料:使用者可以上傳自己的大頭照等。

除了Laravel本身即創建的資料表(包含users),我們需要自己另外建立下面五個資料表:

  1. 資料表(projects):對應Model(Project)
schema::create('projects', function (Blueprint $table) {
           $table->id();
           $table->foreignId('owner_id');
           $table->string('title');
           $table->text('description');
           $table->text('note')->nullable();
           $table->timestamps();
           $table->foreign('owner_id')
               ->references('id')
               ->on('users')
               ->onDelete('cascade');
       });
  1. 資料表(tasks):對應Model(Task)
Schema::create('tasks', function (Blueprint $table) {
           $table->id();
           $table->foreignId('project_id')
               ->constrained('projects')
               ->onDelete('cascade');
           $table->foreignId('assignee_id')
               ->constrained('users')
               ->onDelete('cascade');
           $table->text('body');
           $table->dateTime('start');
           $table->dateTime('due');
           $table->boolean('completed')->default(false);
           $table->timestamps();
  1. 資料表(activities):對應Model(Activity)
Schema::create('activities', function (Blueprint $table) {
           $table->id();
           $table->foreignId('user_id')->constrained('users')->onDelete('cascade');
           $table->nullableMorphs('recordable');
           $table->text('description');
           $table->json('changes')->nullable();
           $table->timestamps();
       });
  1. 資料表(member_project):紀錄被邀請加入計畫的成員
Schema::create('member_project', function (Blueprint $table) {
           $table->primary(['member_id','project_id']);
           $table->foreignId('member_id');
           $table->foreignId('project_id');
           $table->timestamps();
           $table->foreign('member_id')
           ->references('id')
           ->on('users')
           ->onDelete('cascade');
           $table->foreign('project_id')
           ->references('id')
           ->on('projects')
           ->onDelete('cascade');
  1. 資料表(profiles):對應Model(Profile)
Schema::create('profiles', function (Blueprint $table) {
           $table->id();
           $table->foreignId('user_id')->constrained('users')->onDelete('cascade');
           $table->string('avatar');
           $table->unique('user_id');
           $table->timestamps();
       });

明天則是這些Model間關係的程式碼,之後便會進入Eloquent ORM系列二:Model與Model關係的操作的整理,了解Eloquent ORM為Model提供了哪些關係。


上一篇
30天完成家庭任務平台:第三天
下一篇
30天完成家庭任務平台:第五天
系列文
30天完成家庭任務平台30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言