Laravel框架數據庫CURD操作、連貫操作總結

      網友投稿 846 2022-05-30

      這篇文章主要介紹了Laravel框架數據庫CURD操作、連貫操作、鏈式操作總結,本文包含大量數據庫操作常用方法,需要的朋友可以參考下

      一、Selects

      檢索表中的所有行

      復制代碼 代碼如下:

      $users = DB::table('users')->get();

      foreach ($users as $user)

      {

      var_dump($user->name);

      }

      從表檢索單個行

      復制代碼 代碼如下:

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

      var_dump($user->name);

      檢索單個列的行

      復制代碼 代碼如下:

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

      檢索一個列值列表

      復制代碼 代碼如下:

      $roles = DB::table('roles')->lists('title');

      該方法將返回一個數組標題的作用。你也可以指定一個自定義的鍵列返回的數組

      復制代碼 代碼如下:

      $roles = DB::table('roles')->lists('title', 'name');

      指定一個Select子句

      復制代碼 代碼如下:

      $users = DB::table('users')->select('name', 'email')->get();

      $users = DB::table('users')->distinct()->get();

      $users = DB::table('users')->select('name as user_name')->get();

      Select子句添加到一個現有的查詢$query = DB::table('users')->select('name');

      復制代碼 代碼如下:

      $users = $query->addSelect('age')->get();

      where

      復制代碼 代碼如下:

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

      OR

      復制代碼 代碼如下:

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

      Where Between

      復制代碼 代碼如下:

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

      Where Not Between

      復制代碼 代碼如下:

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

      Where In With An Array

      復制代碼 代碼如下:

      $users = DB::table('users')->whereIn('id', array(1, 2, 3))->get();

      $users = DB::table('users')->whereNotIn('id', array(1, 2, 3))->get();

      Using Where Null To Find Records With Unset Values

      復制代碼 代碼如下:

      $users = DB::table('users')->whereNull('updated_at')->get();

      Order By, Group By, And Having

      復制代碼 代碼如下:

      $users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();

      Offset & Limit

      復制代碼 代碼如下:

      $users = DB::table('users')->skip(10)->take(5)->get();

      二、連接

      Joins

      查詢構建器也可以用來編寫連接語句。看看下面的例子:

      Basic Join Statement

      復制代碼 代碼如下:

      DB::table('users')

      ->join('contacts', 'users.id', '=', 'contacts.user_id')

      ->join('orders', 'users.id', '=', 'orders.user_id')

      ->select('users.id', 'contacts.phone', 'orders.price')

      ->get();

      左連接語句

      復制代碼 代碼如下:

      DB::table('users')

      ->leftJoin('posts', 'users.id', '=', 'posts.user_id')

      ->get();

      DB::table('users')

      ->join('contacts', function($join)

      {

      $join->on('users.id', '=', 'contacts.user_id')->orOn(...);

      })

      ->get();

      DB::table('users')

      ->join('contacts', function($join)

      {

      $join->on('users.id', '=', 'contacts.user_id')

      ->where('contacts.user_id', '>', 5);

      })

      ->get();

      三、分組

      有時候,您可能需要創建更高級的where子句,如“存在”或嵌套參數分組。Laravel query builder可以處理這些:

      復制代碼 代碼如下:

      DB::table('users')

      ->where('name', '=', 'John')

      ->orWhere(function($query)

      {

      $query->where('votes', '>', 100)

      ->where('title', '<>', 'Admin');

      })

      ->get();

      上面的查詢將產生以下SQL:

      復制代碼 代碼如下:

      select * from users where name = 'John' or (votes > 100 and title

      <> 'Admin')

      Exists Statements

      Laravel框架數據庫CURD操作、連貫操作總結

      DB::table('users')

      ->whereExists(function($query)

      {

      $query->select(DB::raw(1))

      ->from('orders')

      ->whereRaw('orders.user_id = users.id');

      })

      ->get();

      上面的查詢將產生以下SQL:

      復制代碼 代碼如下:

      select * from userswhere exists (

      select 1 from orders where orders.user_id = users.id

      )

      四、聚合

      查詢構建器還提供了各種聚合方法,如統計,馬克斯,min,avg和總和。

      Using Aggregate Methods

      復制代碼 代碼如下:

      $users = DB::table('users')->count();

      $price = DB::table('orders')->max('price');

      $price = DB::table('orders')->min('price');

      $price = DB::table('orders')->avg('price');

      $total = DB::table('users')->sum('votes');

      Raw Expressions

      有時您可能需要使用一個原始表達式的查詢。這些表達式將注入的查詢字符串,所以小心不要創建任何SQL注入點!創建一個原始表達式,可以使用DB:rawmethod:

      Using A Raw Expression

      復制代碼 代碼如下:

      $users = DB::table('users')

      ->select(DB::raw('count(*) as user_count, status'))

      ->where('status', '<>', 1)

      ->groupBy('status')

      ->get();

      遞增或遞減一個列的值

      復制代碼 代碼如下:

      DB::table('users')->increment('votes');

      DB::table('users')->increment('votes', 5);

      DB::table('users')->decrement('votes');

      DB::table('users')->decrement('votes', 5);

      您還可以指定額外的列更新:

      復制代碼 代碼如下:

      DB::table('users')->increment('votes', 1, array('name' => 'John'));

      Inserts

      將記錄插入表

      復制代碼 代碼如下:

      DB::table('users')->insert(

      array('email' => 'john@example.com', 'votes' => 0)

      );

      將記錄插入表自動增加的ID

      如果表,有一個自動遞增的id字段使用insertGetId插入一個記錄和檢索id:

      復制代碼 代碼如下:

      $id = DB::table('users')->insertGetId(

      array('email' => 'john@example.com', 'votes' => 0)

      );

      注意:當使用PostgreSQL insertGetId方法預計,自增列被命名為“id”。

      多個記錄插入到表中

      復制代碼 代碼如下:

      DB::table('users')->insert(array(

      array('email' => 'taylor@example.com', 'votes' => 0),

      array('email' => 'dayle@example.com', 'votes' => 0),

      ));

      四、Updates

      更新一個表中的記錄

      復制代碼 代碼如下:

      DB::table('users')

      ->where('id', 1)

      ->update(array('votes' => 1));

      五、 Deletes

      刪除表中的記錄

      復制代碼 代碼如下:

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

      刪除表中的所有記錄

      復制代碼 代碼如下:

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

      刪除一個表

      復制代碼 代碼如下:

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

      六、Unions

      查詢構建器還提供了一種快速的方法來“聯盟”兩個查詢:

      復制代碼 代碼如下:

      $first = DB::table('users')->whereNull('first_name');

      $users =

      DB::table('users')->whereNull('last_name')->union($first)->get();

      unionAll方法也可以,有相同的方法簽名。

      Pessimistic Locking

      查詢構建器包括一些“悲觀鎖定”功能來幫助你做你的SELECT語句。  運行SELECT語句“共享鎖”,你可以使用sharedLock方法查詢:

      復制代碼 代碼如下:

      DB::table('users')->where('votes', '>',

      100)->sharedLock()->get();

      更新“鎖”在一個SELECT語句,您可以使用lockForUpdate方法查詢:

      復制代碼 代碼如下:

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

      七、緩存查詢

      你可以輕松地緩存查詢的結果使用記憶法:

      復制代碼 代碼如下:

      $users = DB::table('users')->remember(10)->get();

      在本例中,查詢的結果將為十分鐘被緩存。查詢結果緩存時,不會對數據庫運行,結果將從默認的緩存加載驅動程序指定您的應用程序。  如果您使用的是支持緩存的司機,還可以添加標簽來緩存:

      復制代碼 代碼如下:

      $users = DB::table('users')->cacheTags(array('people', 'authors'))->remember(10)->get();

      https://www.jb51.net/article/54713.htm

      Laravel 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:深入學習Java內存模型(Java面試問題)
      下一篇:注解@CrossOrigin解決跨域問題
      相關文章
      亚洲国产精品人人做人人爽| 精品亚洲aⅴ在线观看| 亚洲最新视频在线观看| 久久亚洲欧洲国产综合| 亚洲中文字幕无码中文字| 亚洲另类精品xxxx人妖| 亚洲国产成人精品久久| 亚洲国产福利精品一区二区| 日韩精品一区二区亚洲AV观看| 亚洲欧洲日韩不卡| 久久久亚洲欧洲日产国码二区| 色婷婷亚洲十月十月色天| 久久亚洲精品无码AV红樱桃| 亚洲日韩区在线电影| 亚洲视频在线观看| 亚洲理论片在线中文字幕| 亚洲成aⅴ人片在线影院八| 亚洲a级成人片在线观看| 亚洲天堂免费在线| 亚洲av无码有乱码在线观看| 在线观看亚洲电影| 2048亚洲精品国产| 亚洲午夜久久久久久久久电影网| 久久亚洲高清综合| 亚洲第一极品精品无码久久| 亚洲人成在线电影| 亚洲国产精品综合一区在线 | 激情内射亚洲一区二区三区爱妻| 国产精品亚洲午夜一区二区三区| 亚洲日韩中文字幕一区| 国产精品亚洲一区二区三区久久| 亚洲欧洲日产国码一级毛片| 亚洲日产无码中文字幕| 亚洲伊人tv综合网色| 亚洲不卡中文字幕| 亚洲AV网一区二区三区| 中文字幕亚洲第一| 亚洲综合精品香蕉久久网97| 亚洲免费网站在线观看| 亚洲av中文无码乱人伦在线观看 | 国产v亚洲v天堂a无|