午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

查詢數據

基本查詢

查詢一個(ge)數據使(shi)用:

// table方法必(bi)須指定完整的數據表名
Db::table('think_user')->where('id',1)->find();

find 方法查詢結果不存在(zai),返回 null

查詢數(shu)據集使用:

Db::table('think_user')->where('status',1)->select();

select 方法(fa)查詢結果(guo)不存在,返回空數組

如果(guo)設置了數據表前(qian)綴參數的(de)話(hua),可以使用

Db::name('user')->where('id',1)->find();
Db::name('user')->where('status',1)->select();

如果你的數據表(biao)沒(mei)有使用表(biao)前綴功能,那么name和(he)table方(fang)法的一樣的效果。

findselect方法之前(qian)可以使用(yong)所有的鏈式操作方法。

默認情況下,find和select方(fang)法(fa)返回的都是(shi)數組(zu)。

主從查詢

如果你(ni)使用(yong)了分布式數(shu)據庫(ku),那么(me)默認情(qing)況下查(cha)詢操(cao)作(zuo)都是在從數(shu)據庫(ku)中進行,如果你(ni)在一(yi)些特殊的情(qing)況下需要從主庫(ku)讀取數(shu)據,可以使用(yong):

$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')->insert($data);
Db::name('user')->master()->where('id',1)->find();

V5.0.19+版本開始,支持一旦某個表寫入(ru)了數據,那么(me)當前請求的后(hou)續(xu)查詢操作(zuo)都可以(yi)自動從主庫讀取。

你需要在數據庫配置(zhi)文(wen)件中增(zeng)加(jia)下面的配置(zhi)參數:

// 從主庫讀(du)取數據
'read_master'	=>	true,

如果你只需要對某個表進行操作,可以使用readMaster方法。

$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')
	->readMaster()
    ->insert($data);
// 后續(xu)所有關于(yu)該數據(ju)表的(de)查詢都會走主庫

也可以讓后續(xu)所(suo)有數據表的查詢(xun)都走主(zhu)庫

$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')
	->readMaster(true)
    ->insert($data);
// 后(hou)續(xu)所有數據表的查詢都會(hui)走主(zhu)庫(ku)

助手函數

系統提供了一個db助手(shou)函(han)數,可以(yi)更方便(bian)的查(cha)詢:

db('user')->where('id',1)->find();
db('user')->where('status',1)->select();

注意:使用db助手函數默認每次都會重新連接數據庫,而使用Db::name或者Db::table方法的(de)話(hua)都是單例(li)的(de)。db函數如果需(xu)要采用相同的(de)鏈接,可以傳入第三個參數,例(li)如:

db('user',[],false)->where('id',1)->find();
db('user',[],false)->where('status',1)->select();

上面的(de)方式會使用同一個數據庫連(lian)接,第(di)二個參(can)數為數據庫的(de)連(lian)接參(can)數,留空表示采用數據庫配(pei)置文件的(de)配(pei)置。

版本 調整功能
5.0.9 db助手函數默認不再強制重新連接

使用Query對象或閉包查詢

或者使用查詢(xun)(xun)對象進行查詢(xun)(xun),例如:

$query = new 	hinkdbQuery();
$query->table('think_user')->where('status',1);
Db::find($query);
Db::select($query);

或者直接使用(yong)閉(bi)包函數查詢,例如:

Db::select(function($query){
    $query->table('think_user')->where('status',1);
});

值和列查詢

查詢某(mou)個(ge)字(zi)段的(de)值可以(yi)用(yong)

// 返回某個(ge)字段的值(zhi)
Db::table('think_user')->where('id',1)->value('name');

value 方(fang)法查詢結果不存在,返回 null

查(cha)詢某一列的值(zhi)可以用

// 返回數組
Db::table('think_user')->where('status',1)->column('name');
// 指(zhi)定索(suo)引(yin)
Db::table('think_user')->where('status',1)->column('name','id');
Db::table('think_user')->where('status',1)->column('id,name'); // 同(tong)tp3的(de)getField

column 方(fang)法查詢結果不存在(zai),返回(hui)空數組

數據集分批處理

如果你需要處(chu)理(li)成千上百條數(shu)據(ju)庫記錄,可以考慮使用(yong)chunk方法,該方法一次獲取結(jie)果集的一小塊,然后(hou)填充每一小塊數(shu)據(ju)到要處(chu)理(li)的閉包(bao),該方法在編寫處(chu)理(li)大(da)量數(shu)據(ju)庫記錄的時(shi)候(hou)非常有用(yong)。

比如,我們可以全部用戶(hu)表(biao)數據進行分批(pi)處(chu)理,每次處(chu)理 100 個用戶(hu)記錄:

Db::table('think_user')->chunk(100, function($users) {
    foreach ($users as $user) {
        //
    }
});
// 或者交給回調(diao)方法(fa)myUserIterator處(chu)理
Db::table('think_user')->chunk(100, 'myUserIterator');

你可以(yi)通過(guo)從(cong)閉包函(han)數中返(fan)回(hui)false來中止(zhi)對數據集的處理(li):

Db::table('think_user')->chunk(100, function($users) {
    // 處理結(jie)果(guo)集...
    return false;
});

也(ye)支持在(zai)chunk方法之前調用其它的(de)查詢方法,例如:

Db::table('think_user')->where('score','>',80)->chunk(100, function($users) {
    foreach ($users as $user) {
        //
    }
});

chunk方法的(de)處理默認是根據主鍵查詢(xun),支持(chi)指定字段,例如:

Db::table('think_user')->chunk(100, function($users) {
    // 處(chu)理結果集...
    return false;
},'create_time');

V5.0.11版本(ben)開(kai)始,chunk方法(fa)支持指(zhi)定處理數據的(de)順序。

Db::table('think_user')->chunk(100, function($users) {
    // 處理結果集...
    return false;
},'create_time', 'desc');

JSON類型數據查詢(mysql V5.0.1

// 查詢(xun)JSON類型字段 (info字段為json類型)
Db::table('think_user')->where('info$.email','thinkphp@qq.com')->find();
文檔最后更新時間:2019-11-29 09:00:38

文檔
目(mu)錄(lu)

深色
模(mo)式

切換
寬(kuan)度