四種實例化模型的方式:
方式一:創建一個基礎模型(實例化一個系統自帶的數據庫操作類);2.0以后更加科學方便,實例化一個數據庫操作類的時候,可以不用自己去定義一個數據庫操作類,thinkphp會自動的去找到數據庫當中的表,并且把表當中的字段全部拿過來,直接操作的對象就是操作的這張表:
$user=new Model("User");<==>$user=M("User");
User首字母大寫,我們命名表的時候表名:think_user,在這個當中thinkphp會按照大小寫來區別你在前面有沒有下劃線,think_user_message_id,$mes=new Model("UserMessageID");而寫think_userMessageId,則不行.
方式二:實例化一個表的時候,同時實例化自己寫的自定義數據庫模型操作類
Model文件夾下:
- class CommonModel extends Model{
- function abc(){
- echo "我的common模型里的方法abc輸出的";
- }
- }
Action文件夾下:
- $user=M('User','CommonModel');<==>$user=new CommonModel('User');
- $list = $user->select();
- dump($list);
- $list -> abc();
方式二:可以實現更加復雜的業務邏輯
方式三:(實例化一個用戶定義的模型)
需要用戶手動創建一個模型,可以針對這個表(如user),來寫上一個自定義模型,在自定義模型中可以封裝thinkphp為我們提供的高級功能,還可以封裝一些自定義方法來實現更加復雜的業務邏輯.
Model文件夾下:
- class UserModel extends Model{
- function aa(){
- echo "aaaaaaaaaaaaaaaaaaa";
- }
- }
Action文件夾下:
- $user = new UserModel();<==>$user=D("User");
- $list = $user->select();
- dump($list);
- $user->aa();
第二種方式和第三種方式的不同在于
第二種方式:在你的業務邏輯中通常情況下有一些公共的業務邏輯,公共的邏輯每次單獨定義模型很麻煩,而采用方式二就很方便,公共的業務邏輯可以放到CommonModel中
第三種方式:適用于只針對所操作表的更加復雜的業務邏輯,但是它不需要使用到公共業務邏輯(它的業務邏輯
針對用戶表,它是唯一的,不需要在其他模型中使用)
方式四:此種方式實例化一個空模型,并不知道你要實例化操作的哪一張表,此時的查詢語句中必須要加表前綴:
- $user=new Model();<==>$user=M();
- $list = $user->query("select * from think_user");
- dump($list);
另:D()方法和new Model()的不同:
D()方法:可以自動檢測模型類,不存在時會拋出一個異常,同時對于一個已經實例化的模型不會重復
實例化,默認的D()只能支持調用當前項目(應用)下的模型;如果是前臺項目(home)中,想實例化后臺項目(admin)的模型怎么操作:$user=D('admin','User');如果啟用分組:$user=D("admin.user");
新聞熱點
疑難解答
圖片精選