03-16-2019

Laravel_Model內容撰寫

 

在這裡我就將Model稱為M職員,我們之前有提到Model的工作內容吧,

我們的M職員是負責管理資料的,只要是跟資料有關的都是M職員來幫我們處理。

以下簡單的介紹要如何讓Model去執行他的工作:

 

Step1.

 

資料之間的關係種類

我們要做的簡易作品集會用到一對多及一對一的部分,所以多對多的部分我會以文字敘述為主。

 

一對一:

一位作者會有一份自己的介紹(about me),這樣子就是一對一。

 

 

  1. 我們要先針對Aboutme的model進行撰寫,因為我們要與作者的關係作連結,所以在上面我們要先寫use App\User ;,使用User的資料。

 

  1. 接著要寫user的function,在這我們要寫對等的關係,所以要寫belongsTo ( 'App\User'),綠色的部份是要填寫針對的model。

 

 

  1. 我們針對User的model在最上面寫上使用Aboutme的資料:use App\Aboutme ;

 

  1. 下面的function要寫上aboutme與user的關係,hasone('App\Aboutme');

 

一對多:

我們要放不只一個作品,所以這個情況下我們要用一對多去寫。

 

 

  1. 一開始我們先針對Work的model進行撰寫,在上面我們要先寫use App\User ;,使用User的資料。

 

  1. 一樣在這我們要寫對等的關係,因為作品是屬於作者,

所以要寫belongsTo ( 'App\User' ,  'user_id' ),而藍色的部份是要兩個model想針對的資料欄位。

 

 

  1. 一樣我們針對User的model在最上面寫上使用Work的資料:use App\Work ;

 

  1. 下面的function要寫上work與user的關係,那為什麼這邊會是works而不是work呢?

原因很簡單,因為我們有很多作品所以要用複數,所有作品跟user的關係。




多對多:

一位作者會有很多作品,而一個作品有可能會有兩位以上的作者,

這個情況就是多對多。以下我用假設的狀況:

 

//User model
public function cowork(){
   return $this->belongsToMany('App\Cowork', 'user_cowork', 'user_id', 'cowork_id');
}


//cowork Model
public function users(){
   return $this->belongsToMany('App\User', 'user_cowork', 'cowork_id', 'user_id');
}

 

針對作品與作者們的關係,所以會需要用到user_idcowork_id,而後面底線的第一個部分要針對user_cowork來進行,'user_id' 要與'cowork_id''作對應。



以上是針對網頁model的撰寫,如果想知道更多對應關係

可以參考Laravel Migration、Model、DB物件相關操作 (濃縮)這篇文章喔~~