iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
1
Modern Web

從基礎學習 ThinkPHP系列 第 15

Day15-從基礎學習 ThinkPHP-Model 基礎操作(3)

  • 分享至 

  • xImage
  •  

前言

前一篇我們學習透過 Model 來新增資料,那麼查詢呢?查詢資料該怎麼做呢?所以這一篇將會來介紹該如何使用 Model 做查詢動作。

起手式

一開始我們必須先註冊兩個路由,否則後面會無法操作:

Route::get('/about/list', 'about/index/all');
Route::get('/about/:id', 'about/index/select'); // 這是動態路由的意思,後面會做加強補充說明。

拉取單一資料

最基礎的查詢就是單一查詢,首先讓我們開啟 about/controller/index.php 檔案,然後我們先來製作使用 id 取得資料的方法,假使當我們今天訪問 URL /about/1 會出現資料欄位 id = 1 的人,/about/2 則會出現資料欄位 id = 2 的人以此類推,那麼這就是所謂的動態路由,動態路由簡單來講就是會隨著我們輸入的 URL 而變化的路由。

這邊我們將會使用 id 來查詢資料,而 Model 的部分將會使用 get 方法帶入參數,所以這邊就直接附上範例程式碼會比較清楚:

public function select($id) {
    $user = aboutModel::get($id);
    echo $user->name.'<br/>';
    echo $user->height.'<br/>';
    echo $user->weight.'<br/>';
}

我在這邊已經事先塞入約 5 筆的範例資料 ↓

範例資料

接下來我們可以嘗試訪問 http://localhost:8000/about/1

王大名

當然你也可以嘗試隨機訪問 1 ~ 5 的任一路由,例如 http://localhost:8000/about/3

陳春嬌

那麼這就是拉取單一查詢的方式。

資料清單

有針對 id 來做單一查詢的方式,那麼也就會有查詢全部的方法,在 Model 操作中,我們將會使用到 all() 方法來做查詢,所以就會這樣寫 $user = aboutModel::all();,但是拉出來的資料是必須使用迴圈做處理,因為拉取出來的資料是一個陣列資料,那就讓我們來看看範例程式碼吧~

public function all() {
    $user = aboutModel::all();
    foreach($user as $list) {
        echo $list->name.'<br/>';
        echo $list->height.'<br/>';
        echo $list->weight.'<br/>';
    }
}

基本上程式碼這樣就可以拉取到全部的資料並且回傳到首頁上 ↓

資料清單

但是我這邊額外撰寫另一種範例,我們嘗試將資料傳送至前端,所以會使用 assign() 並指定 fetch() 到特定的 HTML 上渲染畫面:

public function all() {
    $user = aboutModel::all();
    $title = '全部使用者資料';
    $this->assign('title', $title);
    return $this->assign('user', $user)->fetch('getAllUser'); // 最後一筆記得要 return 否則你無法看到模板唷~
}

接下來我們要製作一個 getAllUser.html 在 about/view/index 底下,內容我也直接提供,範例如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>{$title}</title>
</head>
<body>
  <h1>{$title}</h1>
  {volist name="user" id="list"}
  <ul>
    <li>姓名:{$list.name}</li>
    <li>體重:{$list.weight}</li>
    <li>身高:{$list.height}</li>
  </ul>
  {/volist}
</body>
</html>

看到陌生的東西不用擔心,稍後我會講解,建立完成後我們可以訪問 http://localhost:8000/about/list 看資料是否可以成功取得 ↓

前端渲染資料清單

這樣子我們就成功取得所有使用者資料並且是渲染在前端。

最後讓我們回頭講一下 HTML 裡面有一小段奇怪的東西,也就是 {volist name="user" id="list"}volist 是 ThinkPHP 提供的一個內建標籤,它可以將我們從後端傳過來的資料做迴圈處理,當然後面會慢慢陸續講到這些內建標籤,但是實際上最常使用的其實是 volist 以及 eq,目前這邊暫時不講 eq,後面還會有機會使用的,並且在後面章節我也會針對這些內建標籤有比較詳細的介紹。

結尾

下一個章節我會稍微先脫離一下 Model 基礎操作 系列,先讓我們跳到資料操作,畢竟有時候我們可能不想透過 Model 來操作資料,只想在 Controller 中操作,所以下一篇就會跳到資料操作稍微了解一下透過 Model 操控與自己寫 SQL 語法的差異在哪裡,介紹完之後我們再繼續接續講 Model 基礎操作 系列。

本文同步發表於:https://hsiangfeng.github.io/php/20190916/2939346668/


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

尚未有邦友留言

立即登入留言