ホームページ php教程 PHP开发 LaravelフレームワークデータベースのCURD操作とコヒーレント操作の概要

LaravelフレームワークデータベースのCURD操作とコヒーレント操作の概要

Dec 27, 2016 am 10:21 AM

1. 選択

テーブル内のすべての行を取得します

$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();
ログイン後にコピー

間の範囲

$users = DB::table('users')->whereBetween('votes', array(1, 100))->get();
ログイン後にコピー

中間でない範囲

$users = DB::table('users')->whereNotBetween('votes', array(1, 100))->get();
ログイン後にコピー

配列の範囲

$users = DB::table('users')->whereIn('id', array(1, 2, 3))->get();
$users = DB::table('users')->whereNotIn('id', array(1, 2, 3))->get();
ログイン後にコピー

Where Nullを使用して値が設定されていないレコードを検索する

$users = DB::table('users')->whereNull('updated_at')->get();
ログイン後にコピー

Order By、Group By、および2. 接続

結合

クエリ ビルダーを使用して、接続ステートメントを作成することもできます。次の例を見てください:

基本結合ステートメント

$users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();
ログイン後にコピー

左結合ステートメント

$users = DB::table('users')->skip(10)->take(5)->get();
ログイン後にコピー

3. グループ化

場合によっては、「exists」やネストされたパラメーターのグループ化など、より高度な where 句の作成が必要になる場合があります。 Laravel クエリ ビルダーはこれらを処理できます:

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();
ログイン後にコピー

上記のクエリは次の SQL を生成します:

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();
ログイン後にコピー

上記のクエリは次の SQL を生成します:

DB::table('users')
->where('name', '=', 'John')
->orWhere(function($query)
{
$query->where('votes', '>', 100)
->where(&#39;title&#39;, &#39;<>&#39;, &#39;Admin&#39;);
})
->get();
ログイン後にコピー

IV. 集計

クエリ ビルダーは、次のようなさまざまな集計メソッドも提供します。統計、最大、最小、平均、合計。

集計メソッドの使用

  select * from users where name = &#39;John&#39; or (votes > 100 and title 
<> &#39;Admin&#39;)
  Exists Statements
  DB::table(&#39;users&#39;)
  ->whereExists(function($query)
  {
  $query->select(DB::raw(1))
  ->from(&#39;orders&#39;)
  ->whereRaw(&#39;orders.user_id = users.id&#39;);
  })
  ->get();
ログイン後にコピー

生の式

生の式クエリを使用する必要がある場合があります。これらの式はクエリ文字列に挿入されるため、SQL インジェクション ポイントを作成しないように注意してください。生の式を作成するには、DB:rawmethod:

生の式の使用

select * from userswhere exists (
select 1 from orders where orders.user_id = users.id
)
ログイン後にコピー

を使用して、列

$users = DB::table(&#39;users&#39;)->count();
$price = DB::table(&#39;orders&#39;)->max(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->min(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->avg(&#39;price&#39;);
$total = DB::table(&#39;users&#39;)->sum(&#39;votes&#39;);
ログイン後にコピー

更新する追加の列を指定することもできます:

$users = DB::table(&#39;users&#39;)
->select(DB::raw(&#39;count(*) as user_count, status&#39;))
->where(&#39;status&#39;, &#39;<>&#39;, 1)
->groupBy(&#39;status&#39;)
->get();
ログイン後にコピー

Inserts

テーブルにレコードを挿入します

DB::table(&#39;users&#39;)->increment(&#39;votes&#39;);
DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 5);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;, 5);
ログイン後にコピー

自動インクリメントIDを持つテーブルにレコードを挿入します

テーブルに自動インクリメントIDフィールドがある場合は、使用しますinsertGetId を使用してレコードを挿入し、ID を取得します :

 DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 1, array(&#39;name&#39; => &#39;John&#39;));
ログイン後にコピー

注: PostgreSQL の insertGetId メソッドを使用する場合、自動インクリメント列の名前は「id」であることが想定されます。

テーブルに複数のレコードを挿入

DB::table(&#39;users&#39;)->insert(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
ログイン後にコピー

4. 更新

テーブル内のレコードを更新

$id = DB::table(&#39;users&#39;)->insertGetId(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
ログイン後にコピー

5. 削除

テーブル内のレコードを削除

DB::table(&#39;users&#39;)->insert(array(
array(&#39;email&#39; => &#39;taylor@example.com&#39;, &#39;votes&#39; => 0),
array(&#39;email&#39; => &#39;dayle@example.com&#39;, &#39;votes&#39; => 0),
));
ログイン後にコピー

テーブル内のすべてのレコードを削除

DB::table(&#39;users&#39;)
->where(&#39;id&#39;, 1)
->update(array(&#39;votes&#39; => 1));
ログイン後にコピー

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;<&#39;, 100)->delete();
ログイン後にコピー

6. 結合

クエリ ビルダーは、2 つのクエリを「結合」する簡単な方法も提供します。

DB::table(&#39;users&#39;)->delete();
ログイン後にコピー

同じメソッド シグネチャを持つ UnionAll メソッドも使用できます。

悲観的ロック

クエリビルダーには、SELECT ステートメントを支援するいくつかの「悲観的ロック」機能が含まれています。 SELECT ステートメント「共有ロック」を実行するには、sharedLock メソッドを使用してクエリを実行できます:

DB::table(&#39;users&#39;)->truncate();
ログイン後にコピー

SELECT ステートメントの「ロック」を更新するには、lockForUpdate メソッドを使用してクエリを実行できます:

  $first = DB::table(&#39;users&#39;)->whereNull(&#39;first_name&#39;);
  $users = 
DB::table(&#39;users&#39;)->whereNull(&#39;last_name&#39;)->union($first)->get();
ログイン後にコピー

7. クエリをキャッシュします。

ニーモニックを使用してクエリ結果を簡単にキャッシュできます:

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 
100)->sharedLock()->get();
ログイン後にコピー

この例では、クエリの結果は 10 分間キャッシュされます。クエリ結果がキャッシュされる場合、クエリ結果はデー​​タベースに対して実行されず、結果はアプリケーションで指定されたデフォルトのキャッシュ ドライバーからロードされます。キャッシュをサポートするドライバーを使用している場合は、キャッシュにタグを追加することもできます:

 DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 100)->lockForUpdate()->get();
ログイン後にコピー
Laravel フレームワーク データベース CURD 操作およびコヒーレント操作の概要に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)