見出し画像

【 PHP 】 Laravel編⑨ 「クエリビルダ」「ファサード」 FirE♯546

Laravel編続きです。


【 クエリビルダ 】

SQLを使わずに、DBと接続するための機能。
PHPの構文でDBと接続する。


<メリット>

SQLインジェクション攻撃から守る機能がデフォルトでついている。


<使い方>

TestContorller.php

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;   ・・・・・解説①



class TestController extends Controller
{
    //
    public function index()
    {
        $tests = DB::table('tests')->get();       ・・・・・解説②

        dd($tests);   //処理を止めて変数の中身を表示する

        return view('tests.test', compact('values'));

    }
}

<解説①>

use Illuminate\Support\Facades\DB; 

DBファサードをインポートします。

( ※ ファサード後述 )

<解説②>

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

インスタンス化して使用。
DB :: table('テーブル名')
  と書きます。

<表示結果>

http://127.0.0.1:8000/tests/test

このように、データベースのテーブルの情報が取得できます。


【 ファサード 】

Laravelのドキュメント全体を通して、「ファサード」を介してLaravelの機能を操作するコード例を紹介しています。ファサードは、アプリケーションのサービスコンテナで使用可能なクラスに対して「静的な」インターフェイスを提供します。Laravelは、Laravelのほとんどすべての機能へのアクセスを提供する多くのファサードを提供しています。

https://readouble.com/laravel/9.x/ja/facades.html

ファサードは、フランス語で「窓口」の意で、あらゆる機能にアクセスするための「窓口」になります。

クエリビルダの際のコードを例にとると、

TestContorller.php

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;   ・・・・・解説①



class TestController extends Controller
{
    //
    public function index()
    {
        $tests = DB::table('tests')->get();       ・・・・・解説②

        dd($tests);   //処理を止めて変数の中身を表示する

        return view('tests.test', compact('values'));

    }
}

解説①のところで、ファサードを使用しています。

use Illuminate\Support\Facades\DB; 

これ、DBというファサードを使えるようになります。

ファサードを定義すると、そのメソッドを、静的に使用できます。
それがこちらのコードです。

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

DB :: とありますが、このコロンを二つ繋げての書き方が、静的なメソッドの使用です。


【 まとめ 】

「クエリビルダ」「ファサード」について書きました。

クエリビルダはPHPの構文でDBを操作できるメリットがあります。

実際に使うために次は、何かを作って学ぶ方へ進む予定です。

この記事が気に入ったらサポートをしてみませんか?