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

前言

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

起手式

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

1
2
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 方法帶入參數,所以這邊就直接附上範例程式碼會比較清楚:

1
2
3
4
5
6
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();,但是拉出來的資料是必須使用迴圈做處理,因為拉取出來的資料是一個陣列資料,那就讓我們來看看範例程式碼吧~

1
2
3
4
5
6
7
8
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 上渲染畫面:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!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 基礎操作 系列。