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');
}
}
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'));
}
コントローラからビューへ
resources/views/tests/test.blade.php
@foreach($values as $value)
{{ $value->id }} <br>
{{ $value->text }} <br>
@endforeach
↓表示
方法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);
}
※エロクアントの方がクエリビルダよりも処理速度が多少遅いが、使用メリットが多い。リレーション(複数のテーブルの連帯)、スコープ(クエリの分割)が使用できるため。
ファサード
複雑なクラス群を簡単に使用するための窓口
↓ 細かい設定は Illuminate\Support\Facades\Facade
※一部
※追加設定はconfig/app.phpに書く