很多TP的新手對於模型中的視圖模型不甚了解,官方雖然有詳細手冊,但是對於初學者來說還是比較難以理解!
先簡單說一下視圖模型所能實現的功能,基本就是主表與副表之間各個字段的關聯問題,實現多表關聯查詢,相對於使用原生SQL語句來說,著實是簡單不少.
首先在數據表初始化的時候,用的不是傳統的M('User'),在視圖模型中使用的是D('UserView'),如下圖:
需要主要的是幾個單詞的首字母大寫.
之後在Lib/Model目錄中新建名為XXXViewModel.class.php(XXX為任意控制器名/首字母大寫).裡面的內容格式如下圖:
推薦所有的數組後面都加上'_type'=>'LEFT'.因為當所關聯的表的數據為空時,系統會報錯.
首先主表就是customer數組中填寫的則是需要查詢出來的字段,其中裡面的p_id和b_id則是他所關聯的表設置的別名,其實類似於原生SQL裡面的LeftJoin語句的感覺.
上圖所示,'_table'寫的是你需要關聯的表名,值得注意的是表名需要寫全稱,包括它的前綴.
'_as'則是你要給他取的別名,'name'則是你之後在進行CURD操作的時候所用的字段,
'_on'執行關聯操作:主表.所關聯的ID=副表(使用的是別名).主鍵ID,當他們相等的時候,也就實現了主表某個字段與副表的某條數據進行關聯了,最後驚醒Select操作就是把關聯的內容展現出來了.
當然這個一般用來處理過於繁雜的表數據關聯,比如說一個主表關聯十幾個副表,這個時候用到視圖模型你就會覺得省心了.
這只是一個基本功能的簡單例子,基本就講解到這裡.希望可以幫助到一些TP的新手.
看你喜歡和習慣咯
'cate'=>array('id','name'),
'Category'=>array('count(*)'=>'nums', '_on'=>'blog.cid=cate.id'),