程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> thinkphp框架之模型(數據庫查詢),thinkphp框架

thinkphp框架之模型(數據庫查詢),thinkphp框架

編輯:關於PHP編程

thinkphp框架之模型(數據庫查詢),thinkphp框架


1. 模型定義

     文件名稱必須是 表名+Model.class.php 例如:UserModel.class.php

     

namespace Home\Model;     //該模型類的命名空間
use  Think\Model;             //下面的模型類需要繼承Model基類,Model是系統定義的模型類,在 Think\Model 這個命名空間中
class UserModel extends Model
{    
}

 

      文件中的類名是跟文件名中的“表名”是一致的(這一項是必須的如果不一致在控制器中就會找不到這個模型類)。

      類名與表名的對應關系是(注意:模型名中對應每個大寫對應的數據表的前面都有一個下劃線,如下第二行)

模型名 約定對應數據表(如果數據庫的前綴是think_) UserModel think_user UserTypeModel think_user_type

        

2. 模型實例化

    2.1 直接實例化 

         2.1.1  不帶參數實例化    $user=new \Home\Model\UserModel();

         2.1.2     帶參數實例化    $user=new  \Home\Model\UserModel(['模型名'],['數據表前綴'],['數據庫連接信息']);

        上述兩種方法的區別在於,第一種在實例化的時候回去讀取默認配置(例如在模型中的配置或者是模塊中的數據庫配置),而第二種方法是直接讀取傳入參數的數據庫配置

        模型名是對應的數據庫中的去掉前綴的表名,如果不指定這會讀取模型類的名稱但是是去掉Model後的名稱 例如:

         UsereModel.class.php 文件中的 UsereModel 類 ,如果在實例化的時候傳入模型名"User"會按傳入查找數據表 前綴+“user”,如果不傳則會提取 UsereModel類的 “Usere” 去查找數據表。這樣可以解決模型名與數據表明不一致的問題。

     2.2  D方法實例化

     D方法的參數是模型的名稱,並且和模型類的大寫定義是一致的。

<?php 
  
//實例化模型
 $user=D("User");

//相當於 $user=new \Home\Model\UserModel(); 

     跨模塊實例化

     D('Admin/User') 其中 “Admin” 是模塊名稱,“User”是模型名稱  

    實例化 Extend擴展名空間下的Info模型

      D('Extend://Editor/Info')

    2.3 M方法實例化

        M('User') 與D方法實例化的區別是這個方法不需要該模型存在,並且如果模型存在則其中的方法也會別忽略,該方法主要是用來對數據庫的操作。

          當D方法沒有找到模型時會默認的調用 M方法。

    2.4  實例化空模型

         $Model=new Model() 或者 $Model=M();

          這種空實例可以用老進行原生的sql查詢(注:其他的模型也可以進行原生的sql查詢,並且查詢的表不必跟模型對應)

3. 模型中的字段

   $fields=array('','') 表示數據表中的字段

   $pk 表示數據表的主鍵

   $connection=array('db_type' => 'mysql','db_user' => 'root','db_pwd' => '1234','db_host' => 'localhost','db_port' => '3306','db_name' => 'thinkphp','db_charset' => 'utf8','db_params' => array(), // 非必須);  表示數據庫連接

   數據庫類型://用戶名:密碼@數據庫地址:數據庫端口/數據庫名#字符集

    $connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved