連接數(shù)據(jù)庫
- 修改database.php配置文件门岔,配置數(shù)據(jù)庫的連接
return [
// 數(shù)據(jù)庫類型
'type' => 'mysql',
// 服務(wù)器地址
'hostname' => '127.0.0.1',
// 數(shù)據(jù)庫名
'database' => 'think',
// 用戶名
'username' => 'root',
// 密碼
'password' => '123456',
'hostport' => '',
// 連接dsn
'dsn' => '',
// 數(shù)據(jù)庫連接參數(shù)
'params' => [],
// 數(shù)據(jù)庫編碼默認采用utf8
'charset' => 'utf8',
// 數(shù)據(jù)庫表前綴
'prefix' => 'think_',
// 數(shù)據(jù)庫調(diào)試模式
'debug' => true,
// 數(shù)據(jù)庫部署方式:0 集中式(單一服務(wù)器),1 分布式(主從服務(wù)器)
'deploy' => 0,
// 數(shù)據(jù)庫讀寫是否分離 主從式有效
'rw_separate' => false,
// 讀寫分離后 主服務(wù)器數(shù)量
'master_num' => 1,
// 指定從服務(wù)器序號
'slave_no' => '',
// 自動讀取主庫數(shù)據(jù)
'read_master' => false,
// 是否嚴格檢查字段是否存在
'fields_strict' => true,
// 數(shù)據(jù)集返回類型
'resultset_type' => 'array',
// 自動寫入時間戳字段
'auto_timestamp' => false,
// 時間字段取出后的默認時間格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要進行SQL性能分析
'sql_explain' => true,
];
- 在控制器中新建一個db類在這里完成數(shù)據(jù)的增刪改查操作
public function db()
{
$data=date('Y-m-d G-i-s');
try{
$result=Db::table('think_data')
->where('id','6')
->select();
dump($result);
print_r($result);
echo '<br>';
echo Db::table('think_user') ->getLastSql();//打印查詢語句
}
catch (\Exception $a){
echo $a;
}
}
模型定義
初始化
- 初始化模型,在model文件夾中新建一個User.php文件(文件名與數(shù)據(jù)庫表名相同屋剑,會自動連接對應(yīng)的數(shù)據(jù)庫)谍肤,然后在這里引入think中的Model類
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
}
添加數(shù)據(jù)
- 使用模型向數(shù)據(jù)庫中添加數(shù)據(jù)然痊,新建一個同名控制器User.php,引入剛初始化的模型农尖,使用add方法,使用save方法插入數(shù)據(jù)
<?php
namespace app\index\controller;
use app\index\model\User as UserModel;
class User{
//新增一條數(shù)據(jù)
public function add()
{
try{
$user=new UserModel();
$user->name='bann';
$user->email='bann@qq.com';
$user->birthday=strtotime('1998-1-1');
if ($user->save()){
return '新增成功';
}else{
return '失敗';
}
}
catch (\Exception $a){
return $a;
}
}
}
- 或者使用create()
try{
$user['name']='hhh';
$user['email']='hhh@qq.com';
$user['brithday']=strtotime('1990-1-1');
$result=UserModel::create($user);
if ($user->save()){
return '新增成功';
}else{
return '失敗';
}
}
- 批量新增數(shù)據(jù)析恋,使用saveAll()方法添加這個數(shù)據(jù)的數(shù)組
try{
$user=new UserModel();
$list=[
['id'=>3,'name'=>'zaa','email'=>'zaa@qq.com','birthday'=>strtotime('1995-1-1')],
['id'=>4,'name'=>'gazi','email'=>'gazi@qq.com','birthday'=>strtotime('1993-1-1')]
];
if ($user->saveAll($list)){
return '新增成功';
}else{
return '失敗';
}
}
數(shù)據(jù)更新
- 數(shù)據(jù)的更新,使用save方法盛卡,第一個參數(shù)是更改的內(nèi)容助隧,第二個參數(shù)是更新的條件
public function update(){
$user=new UserModel();
$user->save(['name'=>'jack','email'=>'jack@gmail.com','birthday'=>strtotime('1995-2-2')],['id'=>2]);
}
- 和新增數(shù)據(jù)類似,更新數(shù)據(jù)使用saveAll方法
public function update(){
$user=new UserModel();
$list=[
['id'=>1,'name'=>'Leo','email'=>'Leo@gmail.com'],
['id'=>4,'name'=>'Sugar','email'=>'Sugar@gmail.com']
];
$result=$user->saveAll($list);
if ($result){
return '更新成功';
}
}
- 使用get方法就可以根據(jù)主鍵id更新數(shù)據(jù)
public function update(){
$user=UserModel::get(3);
$user->name='Keisar';
$result=$user->save();
if ($result){
echo '更新成功';
dump($result);
}
}
- 必要時可以使用數(shù)據(jù)庫類對象直接更新數(shù)據(jù)滑沧,但是無法使用事件模型的事件功能
public function update(){
$user=new UserModel();
$result=$user->where('id',1)->update(['name'=>'Goyi']);
if ($result){
echo '更新成功';
dump($result);
}
}
- 靜態(tài)方法
public function update(){
$result=UserModel::update(['id'=>5,'name'=>'Fas']);
if ($result){
echo '更新成功';
dump($result);
}
}
查詢數(shù)據(jù)
- 使用get方法并村,直接傳入一個int類型的數(shù)據(jù)可以通過id查詢,或者傳入一個數(shù)組通過判定其條件查詢
public function select(){
$user=UserModel::get(1);
dump($user);
}
$user=UserModel::get(['name'=>'jack']);
- 通過實例化模型后調(diào)用查詢方法
$user =new UserModel();
$result=$user->where('name','like','%a%')->find();
echo ($result) ;
- 獲取多個數(shù)據(jù),使用all方法查詢多個數(shù)據(jù)滓技,可以傳入一個字符串哩牍,或者一個數(shù)組作為一個查詢條件
public function select(){
$list=UserModel::all('1,2,3');
foreach ($list as $key=>$value){//遍歷所有滿足條件的數(shù)據(jù)
echo $value->name.'<br>';
}
}
- 實例化模型
$user=new UserModel();
$result=$user->where('name','like','%a%')->select();
dump ($result);
PS:這幾個數(shù)據(jù)的值$result不能直接輸出(會報錯),需要先遍歷以后輸出數(shù)據(jù)
聚合
- 在模型中調(diào)用數(shù)據(jù)庫的聚合方法進行查詢令漂,統(tǒng)計數(shù)據(jù)庫的數(shù)據(jù)的數(shù)量
$result=UserModel::count();
echo $result;
- 獲取id最小值
$user=new UserModel();
$result=$user->min('id');
echo $result;
刪除當前數(shù)據(jù)
- 使用delete刪除數(shù)據(jù)
public function delete(){
$user=UserModel::get(8);
$result=$user->delete();
if($result){
return '刪除成功';
}
}
- 使用destroy刪除數(shù)據(jù)膝昆,傳入一個int類型的數(shù)據(jù)根據(jù)id刪除,或者傳入一個數(shù)組批量刪除叠必,或者根據(jù)條件刪除
$result=UserModel::destroy(['id'=>6]);
$result=UserModel::destroy(function ($query){
$query->where('name','like','%a%');
});
- 根據(jù)數(shù)據(jù)庫的查詢條件刪除
$result=UserModel::where('id',10)->delete();