2013年12月30日 星期一

yii framework - 實用小技巧 (不定期更新)

1. 想用php的時間函式 (date、time...)卻發生時間抓不準嗎?

把config/main.php加上這行

'timeZone' => 'Asia/Taipei',

就可以嘍!

2. 查詢資料庫可以分為查(回傳) 一筆或是全部資料, 可用的方式如下:

find() //查找指定條件的單個活動記錄。
findByAttributes() //查找具有指定屬性值的單個活動記錄。
findByPk() //查找指定主鍵的單一活動記錄。
findBySql() //查找指定SQL語句的單個活動記錄。

findAll() //查找滿足指定條件的所有活動記錄。
findAllByAttributes() //查找具有指定屬性值的所有活動記錄。
findAllByPk() //查找指定主鍵的所有活動記錄。
findAllBySql() //查找指定SQL語句的所有活動記錄。

2013年12月24日 星期二

yii framework - 查詢資料大解密之"CDbCriteria到底是什麼"? (說明compare跟addCondition的差別)

先看看官方對CDbCriteria的解釋:

CDbCriteria represents a query criteria, such as conditions, ordering by, limit/offset. 

意思是

CDbCriteria代表查詢的條件、排序還有資料取得數目 (筆數)的上下限.

相信如果你爬了很多文會發現一件事, 就是當我們要做 "欄位=$讀取的變數"這樣的條件查詢時, 會出現compareaddCondition, 到底差在哪裡呢? 我們又要選擇哪個呢?

好, 我們來看看兩者的寫法

首先是compare

$target=$_POST['name'];
$criteria = new CDbCriteria;
$criteria->compare('name', $target);
$rawdb=某models的名字::model()->findAll($criteria);

再來是addCondition:

2013年12月19日 星期四

yii framework - 怎樣才能一次搜尋就抓兩張資料表的欄位? (逐步教學) [下]

再貼一次上集的資料表:

假設有order、store兩張表, 欄位如下

order (客人點餐紀錄)
storeId, name, food, feel

store (店家資料)
storeId, storeName, storeAdd, storePhone

好, 今天我們是這個平台的管理者, 而有許多店家加入這個平台, 我們這次要實作的是撈出
1. 指定的店家 (storeName)
2. 他們的點餐紀錄 (name, food, feel)

前些日子小弟我官網的資料看了又看、試了又試就是頻頻失敗 (挫折感很大),
官網把一般的AR (Active Record) 跟 RAR (Relational Active Record) 分開講, 讓我要混合運用的時候各種撞牆阿~ (一樣建議文中的連結都可以去好好了解一下, 對之後自己在思考上會蠻有幫助的)

2013年12月18日 星期三

yii framework - 怎樣才能一次搜尋就抓兩張資料表的欄位? (逐步教學) [上]

假設有order、store兩張表, 欄位如下

order (客人點餐紀錄)
storeId, name, food, feel

store (店家資料)
storeId, storeName, storeAdd, storePhone

他們之間的關係是
一個店家會有多筆點餐紀錄 <- 搞清楚關係是很重要的唷

這時候我們已經知道要有哪個資料表要有那些欄位了, 也知道他們之間的關係了
接著我們就要建立起他們之間的關係-relations, relations這個關鍵字很重要

接著我們參考一下官方的說明: 如何建立資料表之間的關聯?

(強烈建議好好看過官方的說明再使用等一下我說的快速方法)