前一篇我們已經將 Model 所需要的起手式給準備得差不多了,接下來將會開始寫一些基礎的資料操作。
前一篇我們已經有建立了一個 create
控制器方法,但是目前僅僅只是將前端往後端傳的表單資料取出來而已,現在我們要真的將資料存入到我們所建立的 think_user
資料表內,首先我們要在前面加入一段程式碼告知 Controller 我們要用哪一個 Model:
use app\about\model\about as aboutModel;
然後要將 aboutModel
給實例化,接下來只需要在 create
方法下寫一段簡單的程式碼就可以達到實例化:
$user = new aboutModel;
那麼我們已經準備好實例化 Model,但是到底該怎麼樣新增資料進去資料表呢?
首先我們資料欄位有 name
、height
、weight
這三個欄位,這邊會透過一個箭頭 ->
來指定資料欄位,在前面我並沒有解釋 ->
是什麼,->
簡單理解就是調用的意思,我調用哪個類方法、哪個類函數,這樣理解起來比較不會吃力。
那麼另一種呢? =>
這個是用來定義陣列的。
所以我們就可以這樣子調用資料欄位名稱並儲存進去:
$user = new aboutModel;
$user->name = $name;
$user->height = $height;
$user->weight = $weight;
白話一點的說法就是,我調用 Model 的資料欄位,並賦予值進去,最後記得加上 $user -> save();
,這是在告知 Model 我要儲存資料囉。
恭喜你寫完新增資料的操作了(疑?!),真的不要懷疑就這麼簡單。
最後,我們該如何判斷真的有儲存資料進去資料表?由於 $user -> save();
會回傳布林值,所以這邊我們可以多一個判斷,來判斷資料是否成功新增:
if($user -> save()) {
return '['.$user->name'.,ID是'.$user->id.']新增成功'
} else {
$user->getError(); // 輸出錯誤
}
邏輯來講就是新增成功就回傳 新增成功
的訊息,如果失敗就會透過 getError()
來輸出錯誤訊息。
所以完整程式碼如下:
public function create ($name, $height, $weight) {
$user = new aboutModel;
$user->name = $name;
$user->height = $height;
$user->weight = $weight;
if($user -> save()){
return '名稱:'.$user->name.',ID:'.$user->id.'。<br/>新增成功';
}else {
$user->getError(); // 輸出錯誤
}
}
那接下來我們就可以嘗試看看發送表單後會得到什麼結果囉 ↓
如果你出現 Access denied for user 'user'@'localhost' (using password: YES)
的錯誤訊息,就代表你資料庫連接的帳號密碼有誤(我絕對不會說我撰寫過程忘記填密碼),這個狀況只需要到 project/config
底下的 database.php 修改即可解決。
最後我們也可以打開 Navicat 來看看是不是真的將資料給新增進去了 ↓
那麼這一篇就是在講解一個完整的新增動作~
撰寫過程一度卡在奇怪的地方,害我不得以只能重新安裝資料庫,所以自己在撰寫過程中一度卡了將近半小時,那麼下一篇就會講關於查詢資料的部分囉~
本文同步於:https://hsiangfeng.github.io/php/20190915/2341995377/