ThinkPHP實例化模型的四種方法


1、創建一個基礎模型:實例化一個系統自帶的數據庫操作類

   Test.Model.class.php

   class TestModel extends Model{
      
   }

   UserAction.class.php

   function test(){
       $test=M('test');//表示實例化的是自帶的Model類,並且傳入test值表示操作的是test表
       //等同於$test=new TestModel();
       $test=$test->select();
       print_r($test);//輸出test表中所有數據
   }  

2、實例化一個自定義模型

   如果數據庫操作比較復雜,就需要在自定義的Model類中添加一些自定義的數據庫操作方法

   UserModel.class.php

   class UserModel extends Model{
       function pyj(){
           echo 'pengyanjie';
           //其它的一些數據庫操作方法
       }
   }

   UserAction.class.php

   function user(){
       $user=D('User');//實例化自定義的數據庫操作類
       //等同於$user=new UserModel();
       $user->pyj();//調用User模型中的pyj方法
   }  

   或者,你需要實例化一個表,同時呢,實例化一個自己寫的自定義的數據庫操作類

   function love(){
       $love=M('test','UserModel');    
       //$love=new UserModel('test'); 
       $list=$love->select();
       dump($list);
       $love->pyj();
   }  
  
3、實例化一個用戶模型

   UserAction.class.php

   function user(){
       $user=new UserModel();//等同於$user=D('User');
       $list=$user->select();
       dump($list);
       echo $user->aa();
   }

   UserModel.class.php

   該類名user與表名user相對應,所以在UserAction中實例化這個模型的時候就不需要再額外的傳表名了

   class UserModel extends Model{
       function aa(){
           echo 'pengyanjie';
       }
   }

  這個第三種實例化模型方法與第二種的區別在於:在你的業務邏輯當中,通常情況下會有一些公共的業務邏輯,那你用第二種M('表名','模型名');如M('user','CommonModel')會更方便;

  第三種實例化模型方法適於於針對所操作表的更加復雜的業務邏輯,但是它不需要使用到公共業務邏輯。(它的業務邏輯,針對用戶表,它是唯一的,並且不需要在其它模型當中使用)。

4、實例化一個空模型,它並不知道你要實例化操作時用到的是哪張表。

   $user=new Model();//等價與$user=M();
   $list=$user->query('select * from think_user'); //使用傳統的sql語句的方式,如果這樣的話,就必須要加表前綴 
   dump($list);

附:$user=new UserModel();與$user=D('user');的區別:

(1)、D方法可以自動檢測模型類,不存在時,它會拋出一個異常。同時對於已實例化過的模型,不會去重復實例化。默認的D方法,只能應用於當前項目下面的模型。

(2)、如果說,我這是前台應用,但是我想實例化后台項目的模型可以用D搞定。
   
       $user=D('admin','user');//會去自動找admin分組下的user模型類
   
       或者
      
       $user=D('admin.user');


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM