天天看點

關于thinkphp視圖詳解

        用thinkphp開發的時候經常會用到多表查詢、這個時候tp架構對多表查詢封裝好了方法,如我們可以使用如下的方法。

$Model->table(
'think_blog Blog,
think_category Category,
think_user User')
->field(
'Blog.id,Blog.name,
Blog.title,
Category.title as category_name,
User.name as username')
->order('Blog.id desc')
->where('Blog.category_id=Category.id AND Blog.user_id=User.id')
->select();
           

       其實這種方法比較繁瑣,TP有一個類不知道大家有沒有關注過ViewModel.class.php 這個檔案,也就是這篇文章所說的視圖,這個視圖類我們隻要繼承他然後再子類中定義一個屬性、配置好這個屬性就可以使用了。如下所示:

      1、定義一個視圖模型類

//視圖模型 一定需要繼承 ViewModel這個類 不然視圖不能被

class CpViewModel extends ViewModel {

      //成員屬性必須定義 viewFields不能改名。。。。 

      public $viewFields = array( 'Cp'=>array('id','name','title',"status"),    

      'Cp_useer'=>array('cp_id','user_id','title'=>'category_name', '_on'=>'Cp.id=Cp_user.cp_id'), );

}

以上就是配置視圖 下面我詳細說下這個情況、$viewFields成員屬性必須唯一、名稱不能改,然後說下這個數組裡面的内容Cp Cp_user其實是表名、它是将2張表關聯起來,那他們是以什麼方式關聯的呢?這裡有個_on  就可以看明白。那麼配置好了之後我們就可以使用它了、如何使用??

如:    $cpview = D("Cpview");

           $data = array("user_id"=>12,"status");

           $order = "id desc";

           $cpview->where($data)->order($order)->select();

其實上面viewFields的配置視圖 就相當一個虛拟的表 。。。。。。。。。。。大家可以試試!有什麼問題歡迎大家溝通。。。。

php