ホームページ >バックエンド開発 >PHPチュートリアル >LaravelフレームワークデータベースにおけるCURD操作とコヒーレント操作の分析
この記事では主に、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');
$users = DB::table('users')->select('name', 'email')->get();
$users = DB::table('users')->distinct()->get();
$users = DB::table('users')->select('name as user_name')->get();
$users = $query->addSelect('age')->get();
$users = DB::table('users')->where('votes', '>', 100)->get();
$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();
結合
クエリ ビルダーは次のことができます。結合ステートメントを記述するためにも使用されます。次の例を見てください。
基本的な結合ステートメント
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();
「exists」やネストされたパラメータのグループ化など、より高度な where 句の作成が必要になる場合があります。 Laravel クエリ ビルダーはこれらを処理できます: 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
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 )4. 集計
クエリ ビルダーは、統計、最大、最小、平均、合計などのさまざまな集計方法も提供します。
集計メソッドの使用$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');
未加工の式クエリを使用する必要がある場合があります。これらの式はクエリ文字列に挿入されるため、SQL インジェクション ポイントを作成しないように注意してください。生の式を作成するには、DB:rawmethod:
生の式の使用を使用できます。
$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), ));
4. 更新
テーブル内のレコードを更新します
DB::table('users') ->where('id', 1) ->update(array('votes' => 1));
5. 削除
#テーブル内のレコードを削除します#
DB::table('users')->where('votes', '<', 100)->delete();#テーブル内のすべてのレコードを削除します
#
DB::table('users')->delete();テーブルの削除
DB::table('users')->truncate();6. 結合
クエリ ビルダーは、2 つのクエリを「結合」する簡単な方法も提供します。
$first = DB::table('users')->whereNull('first_name'); $users = DB::table('users')->whereNull('last_name')->union($first)->get();UnionAll メソッドも使用でき、同じメソッド シグネチャを持ちます。
悲観的ロック
クエリ ビルダーには、SELECT ステートメントを支援するいくつかの「悲観的ロック」機能が含まれています。 SELECT ステートメント「共有ロック」を実行するには、sharedLock メソッドを使用してクエリを実行します。DB::table('users')->where('votes', '>', 100)->sharedLock()->get();SELECT ステートメントの「ロック」を更新するには、lockForUpdate メソッドを使用してクエリを実行します。
DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();
7. クエリのキャッシュ
ニーモニックを使用してクエリの結果を簡単にキャッシュできます。$users = DB::table('users')->remember(10)->get();
この例では、クエリの結果は次のようになります。 10 分間キャッシュされます。クエリ結果がキャッシュされる場合、クエリ結果はデータベースに対して実行されず、結果はアプリケーションで指定されたデフォルトのキャッシュ ドライバーからロードされます。キャッシュをサポートするドライバーを使用している場合は、キャッシュにタグを追加することもできます。
$users = DB::table('users')->cacheTags(array('people', 'authors'))->remember(10)->get();
以上がこの記事の全内容であり、その他の関連コンテンツについては、皆様の学習に役立つことを願っています。 PHP 中国語 Web サイトにご注意ください。
関連する推奨事項:
PHP CURL のパラメータの説明 CURLOPT以上がLaravelフレームワークデータベースにおけるCURD操作とコヒーレント操作の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。