筋斗雲介面程式設計 虛擬字段(二)

2021-07-28 03:28:31 字數 1390 閱讀 2465

計算字段

在定義虛擬欄位時,」res」也可以是乙個計算值,或乙個很複雜的子查詢。

例如表orderitem是ordr物件的乙個子表,表示訂單中每一項產品的名稱、數量、**:

@ordr: id, userid, status(2), amount, dscr(l)

@orderitem: id, orderid, name, qty, price

乙個訂單對應多個產品項:

orderitem(orderid) n<->1 ordr

在新增訂單時,同時將每個產品的數量、單價新增到orderitem表中了。

訂單中有乙個amount欄位表示金額,由於可能存在折扣或優惠,它不一定等於orderitem中每個產品**之和。

現在希望增加乙個amount2欄位,它表示原價,根據orderitem中每個產品**累加得到,介面設計如下:

ordr.query() -> tbl(..., amount2)

返回- amount2: 訂單原價。

仍然用vcoldefs定義乙個虛擬字段,可以直接用乙個sql查詢得到amount2欄位:

class

ac1_ordr

extends

accesscontrol

這裡amount2在res中定義為乙個複雜的子查詢,其中還用到了t0表,也即是主表」ordr」的固定別名。

可想而知,在這個例子中,取該字段的查詢效率是比較差的。也不要把它用到cond條件中。

[子表字段]

上面ordr與orderitem表是典型的一對多關係,有時希望在返回乙個物件時,同時返回乙個子物件陣列,比如獲取乙個訂單像這樣:

]}

後面章節」子表物件」將介紹其實現方式。但如果子物件相對簡單,且預計記錄數不會特別多,

我們也可以把子表壓縮成乙個字串字段,表中每行以」,」分隔,行中每個欄位以」:」分隔,像這樣返回:

設計介面原型如下,我們用list來描述這種緊湊列表的格式:

ordr.query() -> tbl(..., itemsinfo)

返回- itemsinfo: list(name, price, qty). 格式例如"洗車:25:1,換輪胎:380:2", 表示兩行記錄,每行3個字段。注意字段內容中不可出現":", ","這些分隔符。

子表字段也是一種計算字段,可實現如下:

class

ac1_ordr

extends

accesscontrol

筋斗雲介面程式設計

隨著移動網際網路的快速發展,各行業對手機應用開發需求旺盛。應用開發一般分為前端和後端,後端關注資料和業務,需要對前端各類應用 如安卓應用 蘋果應用 h5應用等 提供基於http協議的互動介面。筋斗雲使用php語言開發的,實現了 分布式物件訪問與許可權控制架構 daca 中的規約,提供的http介面符...

筋斗雲介面程式設計 常用操作(二)

函式應返回符合介面原型中描述的物件,框架會將其轉為最終的json字串。比如登入介面要求返回 因而在api login中,返回結構相符的物件即可 ret id id,isnew 1 return ret 最終返回的json示例 0,如果介面原型中沒有定義返回值,框架會自動返回字串 ok 比如介面api...

筋斗雲介面程式設計 建立Web介面專案

任務 用筋斗雲框架建立乙個web介面專案叫mysvc,建立資料庫,提供對apilog物件的操作介面。git clone mysvc如果github訪問困難,也可以用這個git倉庫 配置好web伺服器,php環境和mysql資料庫。注意php最低版本需要5.4版本,需要開啟mysql,pdo,gd等支...