1. 程式人生 > >連表查詢如何使用getLastSql()

連表查詢如何使用getLastSql()

      在模型操作中 ,為了更好的查明錯誤,經常需要檢視下最近使用的SQL語句,我們可以用getLastSql()方法來輸出上次執行的sql語句。例如:

單表查詢時:

M("User") ->where("user_id=1") ->field("nick") ->select();

//使用方法如下
print_r(M("User") ->getLastSql());

//列印結果如下:
SELECT `nick` FROM `hs_user` WHERE ( user_id=1 );

 

連表查詢時:

$Customer_info = M("crm_customer as c") 
               ->join("LEFT JOIN hs_user as u ON u.user_id=c.uid") 
               ->field('c.cus_name,u.nick')
               ->group('c.cid')
               ->where('u.user_id=1') 
               ->order("c.f_remind_time desc,c.follow_time desc")
               ->limit($Curr_page,$Limit)
               ->select();

//使用方法如下:
print_r(M("crm_customer as c") ->join("LEFT JOIN hs_user as u ON u.user_id=c.uid") 
                         ->field('c.cus_name,u.nick')
                         ->group('c.cid')
                         ->where('u.user_id=1') 
                         ->where($Map) 
                         ->order("c.f_remind_time desc,c.follow_time desc")
                         ->limit($Curr_page,$Limit)
                         ->getLastSql());

//列印結果如下:
SELECT c.cus_name,u.nick FROM hs_crm_customer as c LEFT JOIN hs_user as u ON u.user_id=c.uid  WHERE ( u.user_id=1 ) GROUP BY c.cid ORDER BY c.f_remind_time desc,c.follow_time desc LIMIT 0,10;

注意:Mongo資料庫驅動由於介面的特殊性,不存在執行SQL的概念,因此SQL日誌記錄功能是額外封裝實現的,所以出於效能考慮,只有在開啟除錯模式的時候才支援使用方getLastSql()法獲取最後執行的SQL記錄。