iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
Modern Web

從基礎學習 ThinkPHP系列 第 14

Day14-從基礎學習 ThinkPHP-Model 基礎操作(2)

  • 分享至 

  • xImage
  •  

前言

前一篇我們已經將 Model 所需要的起手式給準備得差不多了,接下來將會開始寫一些基礎的資料操作。

起手式

前一篇我們已經有建立了一個 create 控制器方法,但是目前僅僅只是將前端往後端傳的表單資料取出來而已,現在我們要真的將資料存入到我們所建立的 think_user 資料表內,首先我們要在前面加入一段程式碼告知 Controller 我們要用哪一個 Model:

use app\about\model\about as aboutModel;

然後要將 aboutModel 給實例化,接下來只需要在 create 方法下寫一段簡單的程式碼就可以達到實例化:

$user = new aboutModel;

新增資料

那麼我們已經準備好實例化 Model,但是到底該怎麼樣新增資料進去資料表呢?

首先我們資料欄位有 nameheightweight 這三個欄位,這邊會透過一個箭頭 -> 來指定資料欄位,在前面我並沒有解釋 -> 是什麼,-> 簡單理解就是調用的意思,我調用哪個類方法、哪個類函數,這樣理解起來比較不會吃力。

那麼另一種呢? => 這個是用來定義陣列的。

所以我們就可以這樣子調用資料欄位名稱並儲存進去:

$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/


上一篇
Day13-從基礎學習 ThinkPHP-Model 基礎操作(1)
下一篇
Day15-從基礎學習 ThinkPHP-Model 基礎操作(3)
系列文
從基礎學習 ThinkPHP31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言