iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
1
Software Development

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

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

  • 分享至 

  • xImage
  •  

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

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

今天是還沒有介紹過的Model,分別為Task、Activity、Profile、MemberProject

  1. Model(Task):對應資料表(tasks)
class Task extends Model
{
   use Recordability;
 
   protected $fillable = ['body', 'completed','start','due','assignee_id'];
   protected $touches = ['project'];
   protected $casts = [
       'completed' => 'boolean',
       'start'=>'datetime:Y-m-d H:i:s',
       'due'=>'datetime:Y-m-d H:i:s'
   ];
 
   public function project()
   {
       return $this->belongsTo('App\Project');
   }
   public function assignee()
   {
       return $this->belongsTo('App\User','assignee_id');
   }
   public function path()
   {
       return '/projects/' . $this->project->id . '/tasks/' . $this->id;
   }
   public function activities()
   {
       return $this->morphMany('App\Activity', 'recordable');
   }
 
}
  1. Model(Activity):對應資料表(activities)
class Activity extends Model
{
   protected $fillable=['description','changes','user_id'];
   protected $casts = ['changes' => 'array'];
 
   public function recordable()
   {
       return $this->morphTo();
   }
 
   public function user(){
       return $this->belongsTo('App\User');
   }
 
}
  1. Model(Profile):對應資料表(profiles)
class Profile extends Model
{
 protected $fillable=['user_id','avatar'];
  public function user()
 {
     return $this->belongsTo('App\User');
 }
}
  1. Model(MemberProject):對應資料表(member_project)
class MemberProject extends Model
{
   protected $table = 'member_project';
   protected $fillable =['member_id','project_id'];
 
}

在Eloquent中提供很多方式將資料表連結在一起,像常見的belongsTo<->hasMany等一對多等關係,因此接下來整理這些關係的連結方法。


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

尚未有邦友留言

立即登入留言