LaravelフレームワークデータベースにおけるCURD操作とコヒーレント操作の分析

不言
リリース: 2023-04-01 06:24:02
オリジナル
1588 人が閲覧しました

この記事では主に、Laravel フレームワーク データベースの CURD 操作、コヒーレント操作、チェーン操作の概要を紹介します。この記事には、データベース操作の一般的な方法が多数含まれています。必要な方は、以下を参照してください。

##1. 選択

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

$users = DB::table('users')->get();
foreach ($users as $user)
{
var_dump($user->name);
}
ログイン後にコピー

テーブルから 1 つの行を取得します

$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、Having#

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

オフセットと制限

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

2. 接続

結合

クエリ ビルダーは次のことができます。結合ステートメントを記述するためにも使用されます。次の例を見てください。

基本的な結合ステートメント

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

3グループ化

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

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

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

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 を生成します:

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

4. 集計

クエリ ビルダーは、統計、最大、最小、平均、合計などのさまざまな集計方法も提供します。

集計メソッドの使用

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

未加工の式

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

生の式の使用を使用できます。

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

列の値を増減する

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);
ログイン後にコピー
追加の列更新を指定することもできます:

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

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

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

自動的にインクリメントされる ID を使用してテーブルにレコードを挿入します

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

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

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

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

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

4. 更新

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

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

5. 削除

#テーブル内のレコードを削除します

#

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

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

#

DB::table(&#39;users&#39;)->delete();
ログイン後にコピー
テーブルの削除

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

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

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

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

悲観的ロック

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

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 
100)->sharedLock()->get();
ログイン後にコピー
SELECT ステートメントの「ロック」を更新するには、lockForUpdate メソッドを使用してクエリを実行します。
DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 100)->lockForUpdate()->get();
ログイン後にコピー

7. クエリのキャッシュ

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

$users = DB::table(&#39;users&#39;)->remember(10)->get();
ログイン後にコピー

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

$users = DB::table(&#39;users&#39;)->cacheTags(array(&#39;people&#39;, &#39;authors&#39;))->remember(10)->get();
ログイン後にコピー

以上がこの記事の全内容であり、その他の関連コンテンツについては、皆様の学習に役立つことを願っています。 PHP 中国語 Web サイトにご注意ください。

関連する推奨事項:

PHP CURL のパラメータの説明 CURLOPT


以上がLaravelフレームワークデータベースにおけるCURD操作とコヒーレント操作の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート