瀏覽月:

9 月 2019

JOIN 介紹

今天來介紹JOIN,有以下幾個模式!

  1. JOIN
  2. LEFT JOIN
  3. RIGHT JOIN
  4. FULL OUTER JOIN
  5. CROSS JOIN
SELECT aga.area_pkid, a.name, aga.subid, aga.place, aga.kind 
FROM adoption_gov_animals AS aga LEFT JOIN areas AS a 
ON aga.area_pkid = a.id;
閱讀更多

修改資料表新建 migration

明天我們要來建立權限的部分,之前設定的是驗證使用者使用 token 身份,但一班的網站至少會有管理員或一般會員的區分,因此今天先來修改基本需要設定的東西。

變更資料表

資料表原本規劃時沒注意到的地方,或是規劃好的東西難免都會被要求修改需求,所以修改資料表也是一門學問,用 migration 檔案修改檔案可以方便整個團隊更新到最新的版本。

跟大家說一個經驗,如果目前的系統是在線上用運行中的,並且公司沒有 DBA 在負責管理資料庫的話,要變更資料庫欄位時一定要三思而後行。 至少要確認有沒有備份。

閱讀更多

JOIN 資料表的結合

為什麼拆開了!又要結合~你真的很野小,雖然只是把地區編號不重複的查詢出來,並補上資料,拆成areas 資料表,感覺起來好像沒有什麼,但是如果去拆分csv原始檔 後面的 動物所屬收容所代碼名稱,就會感受到拆解出來可以結審很多空間。

但在拆解後面的資料前,我們先嘗試把兩張資料表結合再一起吧!雖然是結合起來,但並不是真的合成一張表,是用 JOIN這個陳述,查詢出來並不是建立一個資料表

閱讀更多

OAuth2 認證機制 Token 原理

簡單說要做任何需要認證的請求時。例如(我「想」要新增動物)那麼就要先跟伺服器請求核發一組 Access Token(就是一段亂碼)。把這個 Token 附帶在請求中,就可以操作需要驗證的API (我要新增動物-附帶有效的Token)

Passport 是一個官方推薦的套件,可以輕鬆簡單的讓你完成一個完善的 OAuth2 認證機制!

(這裡指的是否登入的感覺,不是權限角色的分組)

順帶一提,Passport Laravel版本必須要大於 5.3 才能使用。

閱讀更多

加入會員認證、註冊帳號

現在的API所有人都可以去操作這些資源Animal、Type 我們要來製作必須驗證後才可以操作API。

Laravel 提供了一種快速的方法,可以使用一個簡單的命令來建置認證所需的所有路由和前端畫面(view),主要是介紹著一個功能,方便我們註冊User帳號。

php artisan make:auth

執行後會產生這些變更

閱讀更多

整理資料表(一) 什麼是關聯式資料表?

關聯式資料庫的概念,是由多個互相有關係的資料表儲存資料並建立關聯。每個資料表是一個實體物件資料,像是我們的animals 資料表,裡面每一筆資料都是物件資料,內容包含動物的所有特性。

我們來整理一下前幾天匯入的另外一張資料表 adoption_gov_animals。如果沒匯入請到前天的文章執行一下SQL

拆分種類資料

adoption_gov_animals 中有一個欄位資料是紀錄動物種,可以用下方SQL執行看看,公開資料有多少種類。

SELECT DISTINCT kind FROM adoption_gov_animals;

顯示結果是有三種,我們把它拆出來到另外一張資料表。先建立一張資料表 types 裡面包含主鍵 id ,以及 name 欄位。其他欄位是紀錄新建以及更新時間。

CREATE TABLE types (
  id bigserial PRIMARY KEY,
  name varchar(20),
  created_at timestamp,
  updated_at timestamp
);

建立完成資料表以後,我們把資料寫入 types 資料表

INSERT INTO types(name,updated_at,created_at)
SELECT DISTINCT kind, now(), now() FROM adoption_gov_animals;

成功!我們有一張 分類資料表了!來記錄每一種分類,例如:貓|狗|鳥…

我們建立一個新的欄位在 adoption_gov_animals 欄位名稱為 types_id 來紀錄兩個的關係,欄位類型要跟 types 資料表的 id 一樣(bigint)

閱讀更多

Resource 轉換格式

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

需求

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

閱讀更多