Thinkphp 整理備忘 雜記 Thinkphp中的 I 函數(Thinkphp3.2.3版本) I方法 Thinkphp中的U函數(Thinkphp3.2.3版本)

1:輸出變量函數  (手冊目錄:控制器-輸出變量)php

  I('變量類型.變量名',['默認值'],['過濾方法'],['額外數據源'])html

  例:$title = I('post.title','','strip_tags');sql

 


 

2:判斷是不是POST方式提交 (手冊目錄:控制器-請求類型)thinkphp

                                     (手冊目錄:附錄-常亮參考)數組

  IS_POST  是系統常亮,判斷當前是否POST請求安全

  例如:   if (IS_POST){  …………   }函數

 


3: 分頁post

$User = M('User'); // 實例化User對象
$count      = $User->where('status=1')->count();// 查詢知足要求的總記錄數
$Page       = new \Think\Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數(25)
$show       = $Page->show();// 分頁顯示輸出
// 進行分頁數據查詢 注意limit方法的參數要使用Page類的屬性
$list = $User->where('status=1')->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select();
$this->assign('list',$list);// 賦值數據集
$this->assign('page',$show);// 賦值分頁輸出
$this->display(); // 輸出模板

 

 4:Thinkphp使用多個_stringthis

     下面這一種狀況,出現兩個_string,第一個string會把第二個給覆蓋掉url

    $map["a"]=1;

    $map["_string"]="條件1 or 條件2";
    $map["_string"]="條件3";

         解決辦法:

    $map["a"]=1;

    $map["_string"]=" ( 條件1 or 條件2 ) ";
    $map["_string"]  .  =" and 條件3";

           生成的sql語句爲:where a=1 AND (  (條件1 OR 條件2) and 條件3  )

 


 

5:大小寫引發的錯誤

    1- 讀取配置 C('參數名稱'),‘參數名稱’的定義和調用時,最好都統一大寫。

 

 


 

6:加載公共模塊的service

  $service = new  \Common\Service\xxxxx();

 

 


 

7:CURD返回值

http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html

http://doc.thinkphp.cn/manual/curd.html

 

①、save()方法:

  返回值是影響的記錄數,若是返回false則表示更新出錯,所以必定要用恆等來判斷是否更新失敗。

$result=$model->save();
if ($result === FALSE) {
    echo '修改失敗';
} elseif($result === 0)  {
    echo '未做任何修改';
} else {
    echo '修改爲功';       
}

②、Count 、Max、Min 、Avg 、Sum返回值
  若是查詢出錯,返回值爲false
  查詢成功,則返回對應的值。(如0、一、2)

 

③、find方法:

  若是查詢出錯返回:false,

  查詢結果爲空返回:NULL

  查詢成功則返回一個關聯數組(鍵值是字段名或者別名)。

④、add()方法:

      若是數據非法或者查詢錯誤則返回false
  若是是自增主鍵 則返回主鍵值,不然返回1

 

 

 

8:使用GROUP BY的時候如何統計記錄條數 COUNT(*) DISTINCT

M(「bus」)->where($where_ybj)->group('ordert')->count("DISTINCT orderid");

 


9:日誌

            $log = print_r($useramount_admin_info, true);
            Log::record($log, 'DEBUG');

 


 

10:多表查詢( 鏈接查詢)    

  方法一:使用table()方法  

        $tables = "b_bus bus,b_waidiao_businfo wd";

        $wdbl_map['bus.license'] = array('like',"%$select_license%");
        $wdbl_map["wd.type"] = 1;
        $wdbl_map["wd.status"] = 1;
        $wdbl_map["_string"] = "wd.busid = bus.id";

        $waidoao_disposable_bus_info_list = M()->table($tables)->where($wdbl_map)->field('bus  .*')->group('wd.busid')->order("wd.id desc")->select();

   方法二:使用join() 方法

 

 

 


 

十一、TP5:擴展配置目錄   

  extra      config('status.ps')

 


 

12:如何在一個模塊Action中直接執行另外一個模塊的Action

  A方法:用於在內部實例化控制器,調用格式:
  A('[項目://][分組/]模塊','控制器層名稱')

A('Home/Common');

 


 

 

13:A方法、R方法、D方法、M方法的區別

  A方法只是對象的實例化,而R方法是能夠同時實例化對象裏面的方法的。

  Thinkphp 3.2.3 A()和R()方法都是對控制器類的實例化,R()方法比A()寫法更簡便,R()方法能直接返回類中方法返回的信息。R()方法裏面封裝了A()方法。

  

// A方法
$test_m=A("Home/Goods");
echo $test_m->test();

// R方法
echo R("Home/Goods/test");

 

  咱們在Model的數據模型裏面,必然須要下面的兩種方法,一個是D方法,一個是M方法,前者是實例化數據模型類,然後者則是實例化數據模型的父類。

 


 

 

14:Thinkphp中的 I 函數(Thinkphp3.2.3版本)  I方法

  I 函數的做用是獲取系統變量,必要時還能夠對變量值進行過濾及強制轉化,I 函數的語法格式:

I('變量類型.變量名/修飾符',['默認值'],['過濾方法或正則'],['額外數據源'])

  在PHP中獲取變量值的方法有不少,好比:$_GET['變量名'],$_POST['變量名'],$_SESSION['變量名'],$_COOKIE['變量名'],$_SERVER['變量名'] 均可以獲取相應的變量值,但在thinkphp中爲了安全的緣由建議統一使用 I 函數來獲取變量值。例如:獲取 URL 地址欄中參數 id 的值,在php中咱們用 $_GET['id'] 來獲取,在thinkphp中咱們能夠用 I('get.id') 來獲取。一樣的, $_POST['id'] 就用 I('post.id') 取代。

 


 

 

15:Thinkphp中的U函數(Thinkphp3.2.3版本)

  U函數的做用是根據當前的URL設置生成對應的URL地址,使用U函數能夠確保項目在移植過程當中不受環境的影響。

  U方法的定義規則以下(方括號內參數根據實際應用決定):

  U('地址表達式',['參數'],['僞靜態後綴'],['顯示域名'])

 


 

 

16:getField用法總結

   getField方法是ThinkPHP中用來獲取字段值的方法,區別於select和find方法,一般僅用於獲取個別字段的值。可是事實上並無那麼簡單,該方法的用法總結以下:
 
  ① 獲取某個字段值:
    $User = M("User"); // 實例化User對象
    // 獲取ID爲3的用戶的暱稱 
    $nickname = $User->where('id=3')->getField('nickname');

 

  ② 獲取某個字段列  

    $User = M("User"); // 實例化User對象
    // 獲取status爲1的用戶的暱稱列表
    $nickname = $User->where('status=1')->getField('nickname',true);

  第二個參數傳入了true,返回的nickname則是一個數組,包含了全部知足條件的暱稱列表。

  若是須要限制返回結果數量,可使用:

$nickname = $User->where('status=1')->getField('nickname',8);

 

  ③ 獲取2個字段列表

    $User = M("User"); // 實例化User對象
    // 獲取status爲1的用戶的暱稱列表
    $nickname = $User->where('status=1')->getField('id,nickname');

 

  ④:更多用法:http://www.thinkphp.cn/info/174.html

 


500、表達式中運算符條件的查詢

  SQL運算符 例子 實際查詢條件
eq = $map['id'] = array('eq',100); 等效於:$map['id'] = 100;
neq != $map['id'] = array('neq',100); id != 100
gt > $map['id'] = array('gt',100); id > 100
egt >= $map['id'] = array('egt',100); id >= 100
lt < $map['id'] = array('lt',100); id < 100
elt <= $map['id'] = array('elt',100); id <= 100
like like $map<'username'> = array('like','Admin%'); username like 'Admin%'
between between and $map['id'] = array('between','1,8'); id BETWEEN 1 AND 8
not between not between and $map['id'] = array('not between','1,8'); id NOT BETWEEN 1 AND 8
in in $map['id'] = array('in','1,5,8'); id in(1,5,8)
not in not in $map['id'] = array('not in','1,5,8'); id not in(1,5,8)
and(默認) and $map['id'] = array(array('gt',1),array('lt',10)); (id > 1) AND (id < 10)
or or $map['id'] = array(array('gt',3),array('lt',10), 'or'); (id > 3) OR (id < 10)
xor(異或) xor 兩個輸入中只有一個是true時,結果爲true,不然爲false,例子略。 1 xor 1 = 0
exp 綜合表達式

$map['id'] = array('exp','in(1,3,8)');

$map['sum'] = array('exp','`sum`+'.$shuliang);

$map['id'] = array('in','1,3,8');
相關文章
相關標籤/搜索