thinkphp學習三

鏈接數據庫
mysql,mssql,pgsql,sqllite,oracle,ibase,pdo
數據庫抽象層到底選擇哪一個,不論選擇哪一個數據庫鏈接,都是使用thinkphp爲你封裝好的方法
db_type=>'mysql'
'db_host'=>'localhost',
'DB_name'=>'videodemo',
'Db_user'=>'root',
'DB_pwd'=>''
db_port=>3306
db_prefix=>'think_'

我在另外一個頁面當中定義一個公共的配置項,然後將各個應用下的自定義配置文件組合return
'URL_MODEL'=>0 //普通模式 get方式
'URL_MODEL'=>2 //rewrite
$arr2=include'./config.inc.php'
return array_merge($arr1,$arr2);
推薦使用這樣一種方式(也就是在配置文件中寫數據庫鏈接參數)
另外,thinkphp還爲我們提供了一些數據庫鏈接方式
action中
$dsn='mysql://google:[email protected]:3306/google'
$db=new Db($dsn);
第二種
$dsn=array(
 'dsn'=>'mysql',
'username'=>'google',
'password'=>'google',
'hostname'=>'
''database=>'google'
);
model
class UserModel extends Model{
 protected $commection=array(
 'dbms'=>'mysql',
'username'=>'aa'
'password'=>'bb'
 'hostname'=>'12.2.12.1'
);
}
主從數據庫 比較適合高併發,高負載
可以通過主從數據庫解決
'DB_deploy_type'=>1
必須要在數據庫服務器中進行相應的配置
鏈接到那臺數據庫服務器
數據庫信息同步
他會在寫入的過程中,自動去找一臺服務器
讀寫分離
寫的數據比較少,而讀的數據很多進行讀寫分離
'DB_RW_SEPARATE'=>true,
utf8
db_charset  db_fields_cache=false,db_fieldtype_check=false
thinkphp爲我們準備考了一個C,來讀取配置文件當中的值
一般是在控制器中讀出,分配到模板當中去

4種實例化模型的方法
1.創建一個基礎模型
2.實例化一個系統自帶的數據庫操作類
//可以不用自己去定義相關的數據庫操作類
thinkphp會自動幫我們找到這個數據庫中的表,並且把表中的相應字段全部拿過來
//因爲我們命名錶的時候,think_user thinkphp會按照大小寫區分有沒加下劃線
$user=new Model('user');
就能夠直接使用這個模型操作類中的方法進行相應的操作
$list=$user->select();
可以不用去管遍歷形成數組的過程
thinkphp考慮到我們操作的時候,每次寫new model
$user=M('user');

你需要實例化一張表同時實例化自己的實例化操作類
$user=M('user','CommonModel');
$list=$user->select();
$user->abd();
$user=new CommonModel('user');

實例化一個用戶定義的模型
需要手動創建一個模型  user可以針對這張表,來寫上一個自定義模型,在自動模型中可以封裝thinkphp爲我們提供的一些高級功能,還可以封裝一些自定義方法來實現更加複雜的業務邏輯
你實例化一個自定義模型的時候,一般你的表名和你的類名,所以不需要額外的傳表名
$user=new UserModel();
$list=$user->select();
實例化自定義模型的第二種和第三者方法的不同
$user=D('user');

4.實例化一個空模型,它並不知道你要實例化操作時的是哪一張表
$user=new Model();
$list=$user->query(select * from think_user);

$user=M();

D方法可以自動檢測模型類,不存在是會拋出一個異常,不會去重複實例化
默認的D方法只支持調用當前下面的模型
$user=D('admin','user');
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章