-
#使用sql語句的方式查詢數(shù)據(jù)庫
// $res = Db::query("select * from user where id=?",[5]);
#插入語句
// $res = Db::execute("insert into user set password=?,username=?,name=?,age=?",[
// md5('password'),
// 'bhfhgvbv',
// 'love',
// '22'
// ]);
#select 返回所有記錄 返回的結(jié)果是一個(gè)二維數(shù)組
// $res = Db::table('user')->select();
#如果結(jié)果不存在 返回一個(gè)空數(shù)組
// $res = Db::table('user')->where([
// ? 'id' ?=> '100'
// ])->select();
#find 返回一條記錄 返回的結(jié)果是一個(gè)一維數(shù)組
#如果結(jié)果不存在 返回一個(gè)空數(shù)組
// $res = Db::table('user')->find();
#value 返回一條記錄 并且是這條記錄的某個(gè)字段值
#如果結(jié)果不存在 返回NULL
// ? $res = Db::table('user')->value('name');
#column 返回一個(gè)一維數(shù)組,數(shù)組中的value值就是我們要獲取的列的值
#如果存在第二個(gè)參數(shù) 就返回這個(gè)數(shù)組并且用第二個(gè)參數(shù)作為數(shù)組的key值
#如果結(jié)果不存在 返回一個(gè)空數(shù)組
// $res = Db::table('user')->column('name','username');
// $res = Db::name('user')->select();
$res = db('user',[],false)->find();
dump($res);
查看全部 -
數(shù)據(jù)庫的鏈接
#第一種方式
dump(config('database'));
$res=Db::connect([
'type' ? ? ? ? ? ?=> 'mysql',
// 服務(wù)器地址
'hostname' ? ? ? ?=> '127.0.0.1',
// 數(shù)據(jù)庫名
'database' ? ? ? ?=> 'test',
// 數(shù)據(jù)庫用戶名
'username' ? ? ? ?=> 'root',
// 數(shù)據(jù)庫密碼
'password' ? ? ? ?=> 'root_pw',
// 數(shù)據(jù)庫連接端口
'hostport' ? ? ? ?=> '',
// 數(shù)據(jù)庫編碼默認(rèn)采用utf8
'charset' ? ? ? ? => 'utf8',
// 數(shù)據(jù)庫表前綴
'prefix' ? ? ? ? ?=> '',
]);
dump($res);
#第二種方式
$res = Db::connect("mysql://root_xn:root@127.0.0.1:3306/course#utf8");
dump($res);
#第三種方式
$res=Db::connect('db_config01');
dump($res);
查看全部 -
Db類查詢的操作
查看全部 -
全局添加更新時(shí)間需要在表中新建create_time和update_time字段,配置文件中設(shè)置“auto_timestamp"=>true,一般不開啟這個(gè)功能,否則表中不存在該字段時(shí)會報(bào)錯(cuò),真正刪除需要把destroy方法或delete方法的第二個(gè)參數(shù)設(shè)置為true
use?think\Model; use?traits\model\SoftDelete; class?User?extends?Model{???? use?SoftDelete;使用軟刪除???? protected?$autoWriteTimestamp?=?true;//開啟自動更新時(shí)間???? protected?$createTime?=?false;//設(shè)置為false代表不使用創(chuàng)建時(shí)間???? protected?$updateTime?=?"update_at";//設(shè)置自定義更新時(shí)間的字段???? protected?$deleteTime?=?"delete_at";//設(shè)置自定義的軟刪除字段}
查看全部 -
set+字段名+Attribute
auto (新增及更新的時(shí)候自動完成的屬性數(shù)組)
insert(僅新增的時(shí)候自動完成的屬性數(shù)組)
update(僅更新的時(shí)候自動完成的屬性數(shù)組)
查看全部 -
可利用toArray獲取改后數(shù)據(jù)
可利用getData獲取原始數(shù)據(jù)查看全部 -
count ? ? User::count(); ? 獲取數(shù)據(jù)總條數(shù)? ? ?
?max ? ? ? User::max('字段名') ??獲取指定字段值的最大值
?sum ? ? ? User::sum('字段名') ??獲取指定字段值的總和
?avg ? ? ? User::avg('字段名') ? 獲取指定字段值的平均值?
min ? ? ? User::min('字段名')?獲取指定字段值的最小值?
都可以和where條件合作
查看全部 -
<?php???? namespace?app\index\controller;???? use?think\Controller;???? use?app\index\model\User;???? class?index?extends?Controller{???????? public?function?index(){???????????? $res?=?User::destroy(function($query){???????????????? $query->where('id','>',5);????????????});//可以傳ID值或者閉包函數(shù)作為條件???????????? dump($res);???????????? $userModel?=?User::get(7);???????????? $userModel->delete();??????????? $res?=?User::where("1=1")?->delete();???????????? dump($res);???????? }??? ?}
查看全部 -
tp里面更新數(shù)據(jù)的兩種方式
1.
$model::where(array('字段'=>'值'))->update(array($change));?
或者如圖所示;
<?php???? namespace?app\index\controller;???? use?think\Controller;???? use?app\index\model\User;???? class?Index?extends?Controller{???????? $data?=?[];???????? for($i=1;$i<21;$i++){ $data[]?=?[ 'username'=>'zhangsan_'.$i, 'password'=>md5('sdfa'._$i),???????????????? 'age'=>$i];???????????? $userModel?=?new?User;???????????? $userModel->saveAll($data);???????????? dump($res);???????????? $res?=?User::update([ 'username'=>'wangba', 'age'=>15,??????????????? 'id'=>15],function($query){???????????????? $query->where('id','LT',5);});//如果第一個(gè)參數(shù)不包含條件ID,第二個(gè)參數(shù)應(yīng)該設(shè)置ID值或指閉包函數(shù)為更新條件???????????? dump($res);???????????? $res?=?User::where('id','<',6)->update([?????????????????? 'username'=>'hehe']);???????????? $userModel?=?User::get(1);???????????? $userModel->username?=?"123";???????????? $userModel->age?=?110;???????????? $usermodel?=?new?User;???????????? $res?=?$userModel->save(['username'=>'huhu'],function($query){???????????????? $query->where("id","<","5");});???????????? $res?=?$usermodel->saveAll([['id'=>1,'username'=>'jingyao'],???????????????? ['id'=>2,'username'=>'lihong']???????????? ]);???????? }??? ?}
查看全部 -
create([],true)自動排除數(shù)據(jù)庫中不存在的字段,,true可為數(shù)組,設(shè)置為可允許字段的字段名
$userModel=new User;
$userModel->allowfield()->save()? ? 另一種新增字段方式;
create 添加一條數(shù)據(jù),有兩個(gè)參數(shù),第一個(gè)為數(shù)組,要插入的字段和值,第二個(gè)參數(shù)為true時(shí)自動過濾不存在字段, 或者是以數(shù)組形式寫入要添加的字段,返回值為對象;
save 添加一條數(shù)據(jù),兩種書寫方法,用allowField(true)來過濾不存在字段,也可以填寫以數(shù)組的形式添加要添加的字段,返回值為受影響的行數(shù);
saveAll(二維數(shù)組) 添加多條數(shù)據(jù),返回值為二維數(shù)組,value值為對象
<?php???? namespace?app\index\controller;???? use?think\Controller;???? use?app\index\model\User;???? class?Index?extends?Controller{???????? public?function?index(){???????????? $user?=?User::create([?'username'=>'zhangsan',?'password'=>md5(123456),????????????????'age'=>13????????????],['username','age']);//第二個(gè)參數(shù)設(shè)置為true則只插入數(shù)據(jù)表中存在的字段,數(shù)組是允許插入的字段,不設(shè)置插入不存在的字段的時(shí)候會報(bào)錯(cuò)??????????? dump($res->id);//返回插入的ID???????????? $userModel?=?new?User;???????????? $userModel->username?=?"lisi";???????????? $userModel->password?=?md5('sdfa');???????????? $userModel->save();???????????? dump($userModel->id);???????????? $userModel?=?new?User;???????????? $res?=?$userModel->allowField(['username'])->save(["username"=>'wangba','password'=>md5('sdfs'),? 'demo'=>123]);??????????? $res?=?$userModel->saveAll([?['age'=>17],['age'=>18]]);??????????? foreach($res?as?$val){$arr?=?$val->toArray();???????????????? dump($arr);???? ?}?????? ???}??? }
查看全部 -
使用User::get(function($query)){$query->where()->field()}查詢
User::where()->field()->find()查詢某一條? 返回對象
User::all(function($query){}獲取多條記錄,使用主鍵? ?返回對象
User::where()->field()->limit()->order()->select();多條查詢? ? 返回對象
User::where()->value()按字段查詢一條? ?返回的是數(shù)組
User::where()->column("email","username")以username為鍵的數(shù)組
代碼:
<?php
????
namespace
?app\index\controller;
????
use
?think\Controller;
????
use
?app\index\controller\User;
????
class
?index?
extends
?Controller{
????????
$res
?=?User::get(
function
(
$query
){
????????????
$query
->where(
"username"
,
"eq"
,
"zhangsan"
)
??????????????????
->filed(
"username,email"
);
????????
});
????????
$res
?=?User::where(
"id"
,12)
->field(
"id,username"
)->
find();
?????????
$res
?=?User::all(
function
(
$query
){
?????????????
$query
->where(
"id"
,
"<"
,
"15"
)
???????????????????
->select();
?????????
});
?????????
$res
?=?User::where(
'id'
,
'>'
,
"15"
)
? ? ? ? ? ? ??
->field(
"username,email"
)
->limit(3)
->order(
'id?DESC'
)
->select();
?????????
foreach
(
$res
?as
?$val
){
?????????????
$res
->toArray();
?????????????
dump(
$val
->toArray());
????????
?
}
?????????
$res
?=?User::value(
'email'
);
?????????
$res
?=?User::where(
'id'
,
'10'
)->value(
'email'
);
?????????
$res
?=?User::column(
"email"
,
"username"
);
?????????
dump(
$res
);
??
?
}
查看全部 -
Model的使用方法
use app\模塊\model\模型類名
1、$res = 模型類名::get(1);
2、$user = new 模型類名;
? ?$res = $user::get(1);
3、使用Loader
? ?use think\Loader;
? ?$user = Loader::model('模型類名');
? ?$res = $user::get(1);
4、助手函數(shù)
? ?$user = model('模型類名');
? ?$res = $user::get(1);
查看全部 -
常用鏈?zhǔn)讲僮???
原理:Db類的鏈?zhǔn)椒椒ǚ祷谼b對象,可以繼續(xù)使用Db對象的這些方法對查詢數(shù)據(jù)進(jìn)行一些條件構(gòu)造以及范圍的選擇和排序等等;
$res=$db
->where('id','>',5) 條件ID>5
->field('username','id') 只搜索username和id兩個(gè)字段
->order('id DESC') order排序 id DESC ? id倒序
->limit(3,7) limit截取 ?3,7 ? 從3開始截取7個(gè)
->page(3,5) page(m,n)多用于分頁//limit分頁limit((m-1)*n,n)== m:當(dāng)前頁數(shù),n:每頁多少條數(shù)據(jù)
->group('`group`') //group是關(guān)鍵字,這里用``進(jìn)行轉(zhuǎn)義
->select(); select( ); ?搜索
var_dump($res);
注意:order對group是不起作用的;就是在執(zhí)行的group進(jìn)行分組的時(shí)候,并不是在你order排序的基礎(chǔ)上進(jìn)行的;
group('字段'),他會根據(jù)字段的值為分類標(biāo)準(zhǔn)進(jìn)行分類,比如字段值為1的單獨(dú)查出來,字段值為1的單獨(dú)查出來;
查看全部 -
whereOr 判斷條件
e.g.:$sql=$db->where("id","in","1,2,3")->whereOr("username","eq","17771258")->buildSql();
$sql=$db->where([
'id'=>['in',[1,2,3]],
'username'=>'17771258'
])->buildSql();
查看全部 -
buildSql();返回SQL語句
where('字段名','表達(dá)式','查詢條件');
表達(dá)式 含義
EQ、=? ? ? ? 等于(=)?
NEQ、<>? 不等于(<>)?
GT、>? ? ? ? 大于(>)?
EGT、>=? ? 大于等于(>=)?
LT、<? ? ? ? ? ? ? ? ? ? 小于(<)?
ELT、<=? ? ? ? ? ? ? ? 小于等于(<=)?
LIKE? ? ? ? ? ? ? ? ? ? ? 模糊查詢?
[NOT] BETWEEN (不在)區(qū)間查詢?
[NOT] IN? ? ? ? ? ? (不在)IN 查詢( 'id','in' ,'1,5,8'( [1,5,8] ) )
[NOT] NULL 查詢字段是否(不)是NULL?
[NOT] EXISTS EXISTS查詢?
EXP 表達(dá)式查詢,支持SQL語法?
> time 時(shí)間比較?
< time 時(shí)間比較?
between time 時(shí)間比較?
notbetween time 時(shí)間比較?
<!-- Db::table? -->
Db::table('據(jù)庫名')->where()->buildSql();
<!-- Db::name 方法同上 -->
Db::name('不戴前置數(shù)據(jù)庫名')->where()->buildSql();
查看全部
舉報(bào)