LoginSignup
0
0

More than 1 year has passed since last update.

【Laravel】MVCモデル記述方法/DBの情報取得/ファサード

Posted at

MVCモデル記述

ルーティング->コントローラ->ビューでコードを書いていく

routes/web.php
// 使うコントローラの記述
use App\Http\Controllers\TestController;

// 配列で書く(Laravel8 ~)
// 第一引数にURL、第二引数にコントローラとメソッド
Route::get('tests/test',[TestController::class, 'index']);
App/Http/Controllers/TestContoroller.php
class TestController extends Controller
{
    // ここから追記
    public function index()
    {
    // view()はヘルパ関数
    return view('tests.test');
    }
}

フォルダとファイルを作成
image.png

resources/views/tests/test.blade.php
// 表示したい内容
test

DBの情報を取得

DBの情報取得する方法は2つ

方法1 Eloquent

コントローラからモデルにアクセスしてDBの情報を取得

App/Http/Controllers/TestController.php
//使うモデルの読み込み
use App\Models\Test;

public function index()
{
  
    //全件取得 allでコレクション型
    $values = Test::all();

    $count = Test::count();

    // 指定したidのインスタンスを返す
    $first = Test::findOrFail(1);

    // 条件指定
    $whereBBB = Test::where('text', '=', 'bbb');

    // 処理を止めて内容確認
    dd($values, $count, $first, $whereBBB);


    //compact()でViewに変数を渡す
    return view('tests.test', compact('values'));
}

↓ 実行結果
image.png

コントローラからビューへ

resources/views/tests/test.blade.php

@foreach($values as $value)
   {{ $value->id }} <br>
   {{ $value->text }} <br>
@endforeach

↓表示

image.png

方法2 クエリビルダ

SQLに近い構文(raw→生のSQLが欠ける)
PDOパラメーターバインディングを使用し、SQLインジェクション攻撃からアプリケーションを保護。

SQLインジェクション攻撃→SQLコマンドを悪用し、不正にDBへアクセスし、情報を搾取、改ざん、削除する攻撃。

App/Http/Controllers/TestController.php
// 追記
use Illuminate\Support\Facades\DB;

public function index()
{
    // DBファサード
    // getでコレクション型
    $queryBuilder = DB::table('tests')
    ->where('text', '=', 'aaa')
    ->select('id', 'text')
    ->get();

    dd($queryBuilder);
}

↓ 実行
image.png

※エロクアントの方がクエリビルダよりも処理速度が多少遅いが、使用メリットが多い。リレーション(複数のテーブルの連帯)、スコープ(クエリの分割)が使用できるため。

ファサード

複雑なクラス群を簡単に使用するための窓口

設定が書かれているファイル
image.png
image.png

↓ 細かい設定は Illuminate\Support\Facades\Facade
※一部
image.png

※追加設定はconfig/app.phpに書く

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0