laravel的DB類

一、laravel中DB類的使用

1.使用DB門面的table方法枕稀,table方法為給定表返回一個查詢構(gòu)建器弟翘,允許你在查詢上鏈接更多約束條件并最終返回查詢結(jié)果命斧。我們使用get方法獲取表中所有記錄,和原生查詢一樣近忙,get方法返回結(jié)果集的數(shù)據(jù)組竭业,其中每一個結(jié)果都是PHP對象的StdClass實例。你可以像訪問對象的屬性一樣訪問列的值及舍。

<?php
    namespace App\Http\Controllers;
    use DB;
    use App\Http\Controllers\Controller;
    class UserController extends Controller{
        /**
         * 顯示用戶列表
         *
         * @return Response
         */
        public function index()
        {
            $users = DB::table('users')->get();
            return view('user.index', ['users' => $users]);
        }
    }

2.從一張表中獲取一行或一列,如果我們只是想要從數(shù)據(jù)表中獲取一行數(shù)據(jù)未辆,可以使用first方法,該方法將會返回單個StdClass對象.

$user = DB::table('users')->where('name', 'John')->first();
echo $user->name;

3.從一張表中獲取組塊結(jié)果集,如果我們需要處理成千上百條數(shù)據(jù)庫記錄锯玛,可以考慮使用chunk方法鼎姐,該方法一次獲取結(jié)果集的一小塊,然后填充每一小塊數(shù)據(jù)到要處理的閉包更振,該方法在編寫處理大量數(shù)據(jù)庫記錄的Artisan命令的時候非常有用。比如饭尝,我們在批量處理刪除或更新的時候使用方法非常有用:

DB::table('users')->chunk(100, function($users) {
    foreach ($users as $user) {
          $user->delete();
    }
});

還可以通過從閉包函數(shù)中返回false來中止組塊的運行:

DB::table('users')->chunk(100, function($users) {
    return false;
});

如果想要獲取包含單個列值的數(shù)組肯腕,可以使用lists方法,在本例中钥平,我們獲取所有title的數(shù)組:

$titles = DB::table('users')->lists('title');
foreach ($titles as $title) {
    echo $title;
}

在還可以在返回數(shù)組中為列值指定更多的自定義鍵(該自定義鍵必須是該表的其它字段列名实撒,否則會報錯:

$users = DB::table('users')->lists('title', 'name');
    foreach ($users as $name => $title) {
        echo $title;
    }
}
二姊途、內(nèi)連接

查詢構(gòu)建器還可以用于編寫基本的SQL“內(nèi)連接”,你可以使用查詢構(gòu)建器實例上的join方法知态,傳遞給join方法的第一次參數(shù)是你需要連接到的表名捷兰,剩余的其它參數(shù)則是為連接指定的列約束,當(dāng)然负敏,正如你所看到的贡茅,你可以在單個查詢中連接多張表.

$users = DB::table('users')
        ->join('contacts', 'users.id', '=', 'contacts.user_id')
        ->join('orders', 'users.id', '=', 'orders.user_id')
        ->select('users.*', 'contacts.phone', 'orders.price')
        ->get();
三、Where子句

使用查詢構(gòu)建器上的where方法可以添加where子句到查詢中其做,調(diào)用where最基本的方法需要三個參數(shù)顶考,第一個參數(shù)是列名,第二個參數(shù)是一個數(shù)據(jù)庫系統(tǒng)支持的任意操作符妖泄,第三個參數(shù)是該列要比較的值.

$users = DB::table('users')->where('votes', '=', 100)->get();

為了方便驹沿,如果只是簡單比較列值和給定數(shù)值是否相等,可以將數(shù)值直接作為where方法的第二個參數(shù):

$users = DB::table('users')->where('votes', 100)->get();
四蹈胡、Insert插入方法

查詢構(gòu)建器還提供了insert方法來插入記錄到數(shù)據(jù)表渊季。insert方法接收數(shù)組形式的列名和值進(jìn)行插入操作:

DB::table('users')->insert(['email' => 'john@example.com', 'votes' => 0]);

我們甚至可以一次性通過傳入多個數(shù)組來插入多條記錄,每個數(shù)組代表要插入數(shù)據(jù)表的記錄:

DB::table('users')->insert([
    ['email' => 'taylor@example.com', 'votes' => 0],
    ['email' => 'dayle@example.com', 'votes' => 0]
]);
五罚渐、Update更新

當(dāng)然却汉,除了插入記錄到數(shù)據(jù)庫,查詢構(gòu)建器還可以通過使用update方法更新已有記錄搅轿。update方法和insert方法一樣病涨,接收列和值的鍵值對數(shù)組包含要更新的列,我們可以通過where子句來對update查詢進(jìn)行約束:

DB::table('users')->where('id', 1)->update(['votes' => 1]);
六璧坟、Delete刪除

查詢構(gòu)建器還可以通過delete方法從表中刪除記錄:

DB::table('users')->where('id', 1)->delete();

在調(diào)用delete方法之前可以通過添加where子句對delete語句進(jìn)行約束:

DB::table('users')->where('votes', '<', 100)->delete();

如果我們希望清除整張表既穆,也就是刪除所有列并將自增ID置為0,可以使用truncate方法:

DB::table('users')->truncate();

內(nèi)容來源:Laravel學(xué)院5.1查詢構(gòu)造器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雀鹃,一起剝皮案震驚了整個濱河市幻工,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌黎茎,老刑警劉巖囊颅,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異傅瞻,居然都是意外死亡踢代,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門嗅骄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胳挎,“玉大人,你說我怎么就攤上這事溺森∧脚溃” “怎么了窑眯?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長医窿。 經(jīng)常有香客問我磅甩,道長,這世上最難降的妖魔是什么姥卢? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任卷要,我火速辦了婚禮,結(jié)果婚禮上隔显,老公的妹妹穿的比我還像新娘却妨。我一直安慰自己,他們只是感情好括眠,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布彪标。 她就那樣靜靜地躺著,像睡著了一般掷豺。 火紅的嫁衣襯著肌膚如雪捞烟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天当船,我揣著相機與錄音题画,去河邊找鬼。 笑死德频,一個胖子當(dāng)著我的面吹牛苍息,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播壹置,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼竞思,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钞护?” 一聲冷哼從身側(cè)響起盖喷,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎难咕,沒想到半個月后课梳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡余佃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年暮刃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爆土。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡椭懊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雾消,到底是詐尸還是另有隱情灾搏,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布立润,位于F島的核電站狂窑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏桑腮。R本人自食惡果不足惜泉哈,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望破讨。 院中可真熱鬧丛晦,春花似錦、人聲如沸提陶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隙笆。三九已至锌蓄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撑柔,已是汗流浹背瘸爽。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铅忿,地道東北人剪决。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像檀训,于是被迫代替她去往敵國和親柑潦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 肢扯? MyBatis 是支持定制化 SQL妒茬、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,464評論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法蔚晨,內(nèi)部類的語法乍钻,繼承相關(guān)的語法,異常的語法铭腕,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • 數(shù)據(jù)庫入門 數(shù)據(jù)庫: 保存有組織的數(shù)據(jù)的容器(通常是一個文件或一組文件).數(shù)據(jù)庫軟件應(yīng)該稱為 DBMS(DataB...
    Mjericho閱讀 496評論 0 0
  • 清晨六點至晚上十一點半银择,每天熱情洋溢,自信與快樂集于一身累舷,簡直是可以用上所有有關(guān)描述青春和幸福的褒義詞來描述那段歲...
    我是錢非閱讀 214評論 0 2
  • 昨天說到浩考,幼童時期的人們通過花費時間做某件事而產(chǎn)生興趣點,從而獲得做該事情的“天賦”被盈,天賦這個東西析孽,不外乎熟能生巧...
    腐而不朽閱讀 966評論 0 1