瀏覽分類:

11th鐵人賽

Resource 轉換格式

為什麼要有 轉換格式呢? 有時候可能資料表原本的欄位不想讓請求用戶可以直接看到,不想直接讀出整個資料表的所有欄位,有些沒必要提供的就可以趁這時候把他移除掉喔!

需求

前一天我們做了Model 關聯的設定,這樣就可以在查詢animal 同時關聯出分類,以及利用生日欄位計算年齡,符合常見需求,讓請求者可以直接讀取年齡數值不需要再轉換!

閱讀更多

分類CRUD、模型關聯

定義資源

類別 type,預計紀錄該系統的動物分類 (貓、狗、其他…)

定義這個資源物件的內容

定義一個資源需要有哪些詳細資料。

欄位名 說明 格式 備註
id 分類id int(10) unsigned
name 類別名稱 varchar(50)
sort 排序 int(10) 
created_at 新建時間 timestamp NULL
updated_at 更新時間 timestamp NULL

產生基本檔案

C:\project\animal\ > php artisan make:model Type -rmc

設定路由

來到 api.php 把路由指定到 TypeController

Route::apiResource('types', 'TypeController');
閱讀更多

PostgreSQL COPY 匯入資料

今天來嘗試匯入資料的功能,這個超級方便,先想辦法下載資料吧!

打算用 行政院農業委員會資料公開平台下載動物認養資料(.csv)測試 https://data.coa.gov.tw/Query/AdvSearch.aspx?id=QcbUEzN6E6DL

如果用 INSERT 插入資料的陳述句,要寫上百條,上千條資料,苦惱、麻煩、不想做,還好有一個方便的功能 COPY 陳述句,這是 PostgreSQL專有的功能,可以匯入有分隔符號,一行一筆資料的檔案。

  1. 準備好原始要匯入的檔案 今天以 .csv 當範例
  2. 建立好資料表(因為PostgreSQL 只會全部讀入,所以欄位資料一定要夠,並且依照原始檔csv內容去新建)
  3. 利用 COPY 程式碼匯入資料
閱讀更多

驗證資料格式、設定系統語系

新增(C) 查詢(R) 修改(U) 刪除(D) 都完成了!

但應該會發現一件事情,再新增以及修改的形況下,會有一點錯誤!

可以先嘗試看看

POST /api/animal

Headers 一樣給 json 格式回傳,但Body 裡面不要給任何值!

應該會出現錯誤!表示後端程式想要嘗試寫入不符合規定的值到資料表中!

所以需要做後端的表單檢查,Laravel 有一套驗證系統,設定的規則可以看官網文件

AnimalController 中的 store 方法裡一開頭加入

public function store(Request $request)
{
    $this->validate($request, [
        'type_id' => 'required',
        'name' => 'required|max:255',
        'birthday' => 'required|date',
        'area' => 'required|max:255',
        'fix' => 'required|boolean',
        'description' => 'nullable',
        'personality' => 'nullable'
    ]);

    //其他原本的程式略過
}
規格變數 說明
required 必填欄位
nullable 非必填欄位
max:255 最大255值
date 檢查是否為日期格式,利用 PHP strtotime 函數檢查字段
boolean 只能輸入 true false 1 0 “1” “0”

其他請參考

https://laravel.com/docs/5.8/validation#available-validation-rules

閱讀更多

動物排序

昨天參考別人的網址是如何設計的 ,排序的方式參數都是使用 sort ,由於它們都有客製化的排序方式。比如說依照出版日期…

我一樣打算做自由度高一點,透過使用 sorts (就是要跟別人不一樣 哈哈哈xD) 參數來操作。此參數的值以逗號分隔的排序欄位,並且可以使用「:」分隔,將排序方向附加到每個排序欄位。

asc 表示升序或 desc 表示降序。

格式

大約類似像這樣!

/api/animal?sorts=name:asc,id:desc

name 欄位進行排序升序(小->大),再由id倒序(大->小)排列

閱讀更多

資料類型

在建立資料表的過程中,我們需要對新建立的資料表定義欄位結構。

每個欄位都必須給它屬性,例如 文字、數字、日期 這些最常見。

我們前幾天有建立一張 animals 資料表,sql 語法如下

CREATE TABLE animals (
    id bigserial,
    name varchar(255),
    created_at timestamp,
    updated_at timestamp
);
  • bigserial 遞增型的八位元整數
  • varchar 自動適應的字串最大255字元
  • timestamp 日期與時間

之前有說明過,但還有很多資料類型!

閱讀更多

插入資料、SELECT資料

INSERT

INSERT INTO animals (name, created_at, updated_at)
VALUES  ('大黑', now(), now()),
        ('安娜', '2019-09-11 10:00:00', '2019-09-11 10:00:00');

昨天建立好資料庫 animal ,以及資料表animals,如上SQL 語法插入兩筆動物資料。

提醒

有時候可能你輸入的程式碼有問題,手殘按錯字母,PostgreSQL 會顯示相對應的錯誤,提醒我們錯誤的位置在哪邊,但有時候還是會有點模糊,就要發揮工程師的點滿技能,上網查一下問題的解決方法,可能有人也經歷過一樣的問題,可參考他的解決辦法。

閱讀更多

篩選動物

研究一下別人的網址

我查了三個賣書的平台,搜尋條件如下

參數
關鍵字 ux
分類 中文書
價格 20 ~ 500
排列順序 精準度
閱讀更多