1. 程式人生 > >Laravel建立資料模型,建立表之間的關係

Laravel建立資料模型,建立表之間的關係

1、建立資料模型
(1)瀏覽器上輸入phpmyadmin.local新建task資料庫(在虛擬機器中新建task資料庫)
 
(2)新建模型的方法,輸入命令php artisan make:model Project  (新建一張模型表,新建的model在
   app資料夾下)
   php artisan make:model Project -m(建立模型,並生成遷移檔案,如果不加-m,
       還可以通過php artisan make:migration,生成遷移檔案)
 
(3)資料表的遷移,
	php artisan migrate:status       # 檢視資料表的遷移狀態
	php artisan make:migration       # 生成migrations遷移檔案(相當於Python的 
                                       makemigrations)
	php artisan migrate    # 將database/migrations下的檔案遷移到資料庫,生成對應的表
	php artisan migrate:rollback     # 撤銷上一步的migrate遷移操作
 
(4)開發過程中更改資料結構(不rollback,不刪除資料庫的原始資料)
	新建一個migration檔案,projects進行操作
	php artisan make:migration 對錶更改的描述 --table=projects(指定哪一張表)
	php artisan migrate    對映到資料庫
 
(5)如果你在開發階段,你就可以通過:php artisan migrate:refresh 撤回所有的操作,重新編譯對映
   到資料庫表
 
2、定義表與表之間的關係:
(1)定義User和Project的關係(一個使用者對應多個專案)
   # 新增到User.php檔案裡
   public function projects(){
       return $this->hasMany('App\Project');
   }
(2)定義Project和User的關係(一個專案對應一個使用者)
   # 新增到Project.php檔案裡
   public function user(){
       return $this->belongsTo('App\User', user_id);
   }
(3)定義哪些欄位可以被操作
   # 新增到Project.php檔案裡
   protected $fillable = [
       'name',
       'thumbnail'
   ];
(4)在ProjectsController裡
   public function store(Request $request){
       // 通過關係儲存資料,不用再單獨存user_id欄位,已經自動儲存了
       $request->user()->projects()->create([
           'name'=> $request->name,
           'thumbnail'=> $request->thumbnail
 
       ]); 
       // 如果不通過關係,就需要手動新增user_id欄位
       //Project::create([
       //    'name'=> $request->name,
       //    'thumbnail'=> $request->thumbnail,
       //    'user_id'=> $request->user()->id
       //]);
       return '儲存成功';
   }