laravel では、複雑な SQL クエリに "DB::raw()" メソッドが使用されます。このメソッドは、クエリされた結果セットを一時テーブルとして扱い、ページング処理に laravel のクエリビルダー構文を使用できます。構文は「DB::raw('関数またはフィールド');」です。
#この記事の動作環境: Windows 10 システム、Laravel バージョン 6、Dell G3 コンピューター。
プロジェクトで問題が発生しました。複雑な SQL クエリです。laravel のクエリ コンストラクターを使用するのは非常に不便です。さまざまなクエリの長いリストを結合します。条件を考えると頭が痛くなります。ネイティブ SQL ステートメントを使用してクエリを実行したいのですが、laravel の paginate() ページング メソッドは使用できません。このような場合に DB::raw() メソッドが役に立ちます。構文の原則は、クエリの結果セットを一時テーブルとして扱い、ページング処理に laravel のクエリ ビルダー構文を使用することです;
例 1:
$users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();
例 2:
DB::table('someTable') ->selectRaw('count(*), min(some_field) as someMin, max(another_field) as someMax') ->get();
例 3:
DB::table('someTable')->select( array( DB::raw('min(some_field) as someMin'), DB::raw('max(another_field) as someMax'), DB::raw('COUNT(*) as `count`') ) )->get()
例 4:
SELECT (CASE WHEN (gender = 1) THEN 'M' ELSE 'F' END) AS gender_text FROM users; $users = DB::table('users') ->select(DB::raw(" name, surname, (CASE WHEN (gender = 1) THEN 'M' ELSE 'F' END) as gender_text") );
[関連する推奨事項: laravel ビデオ チュートリアル]
以上がlaravelでのDB::rawの使用法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。