バージョン
Laravel8より約1年毎に新バージョンのリリース
Laravel9.0 = PHP8.0以上が必要
バンドル
コンパイル015/02 Laravel5.0 Laravel Elixir (Gulp)
2017/01 Laravel 5.4 Laravel Mix (webpack)
2022/06 Laravel9.18 Viteに変更
Vite
Node.js/npm のインストールが必須
package.json / package-lock.json 設定管理ファイル
vite.config.js Vite設定ファイル
Laravel Breeze (認証ライブラリ)
【Laravel6.x~ Laravel / ui】
View(PHP) Blade
js Vue.js / React.js
css Bootstrap
【Laravel8.x~ Laravel Breeze】
Blade
Alpine.js
Tailwindcss
【Laravel8.x~ Jetstream】
Livewire + Blade
Inertia.js + Vue.js
Tailwindcss
初期設定
・タイムゾーン
・言語設定
・デバックバー
インストール
composer require barryvdh/laravel-debugbar:^3.7
(バージョン指定しない場合は自動的に最新版)
envのAPP_DEBUGで表示切り替え
・エラーメッセージの日本語化
・データベース設定
DBクライアントからデータベースとユーザーを作成
envにも追記
確認
php artisan migrate
エラー対処
MVCモデル
Model (DBとやり取り)
ORM/ORマッパー (DBとのやり取りをLaravel以外で書ける)
Object-Relational Mapping (オブジェクト関係マッピング)
モデルファイルの作成
php artisan make:model Test
コントローラとマイグレーションの同時作成
php artisan make:model Test -mc
【DBから情報を取得する方法】
速度は多少クエリビルダが早いが、エロクアントを優先的に使用する方がメリットが多い。
1.Eloquent
use App\Model\Test;
$test = Test::all(); //モデル名::メソッド
dd($tests); //コレクション型(配列を拡張した型)
リレーション(複数テーブルの連帯)、スコープ(クエリの分割)が使用できる
2.クエリビルダ
SQLに近い構文(rawで生のSQLも書ける)
DB::table('test')->get(); //ファサード(複雑な関連クラスを持つクラス群を簡単に利用するための窓口)
getやfirstで確定。確定しなければQueryBuilder型
use Illuminate\Support\Facades\DB;
コレクション型
 DB::table('tests')->where('text', '=', 'bbb')->select('id', 'text')->get();
QuryBuilder
DB::table('tests')->where('text', '=', 'bbb')->select('id', 'text');
View (見た目)
resources/views/
xxxx.blade.php
Controller (処理)
php artisan make:controller TestController
app/Http/Controllers/ 配下に自動生成
Routing アクセスの振り分け
routes/web.php
Migration (DBテーブルの履歴管理)
databases/migrations
モデルは単数形、マイグレーションは複数形で記述→Laravelが自動判定
ファイル作成
php artisan make:migration create_tests_table
php artisan migrate //DBに反映
php artisan migrate:fresh //テーブルを全て削除し再生成
php artisan migrate:refresh //ロールバックして再生成
Artisan
// キャッシュ削除
php artisan cache:clear
php artisan config:clear
// artisan コマンドリスト表示
php artisan list
tinker (DB簡易接続)
対話型 コマンドでデータ保存・閲覧
php artisan tinker
//保存
$test = new App\Models\Test;
$test->text = "aaa";
$test->save();
App\Models\Test::all(); //全件表示
Laravel起動処理DIとサービスコンテナ
参考記事
エントリポイント(public\index.php)からアクセスが始まる
- view
- public/index.php
- HTTPカーネル
- ルーティング
- ミドルウェア
- コントローラ
- view
DI(依存性の注入)
クラスの中でインスタンス生成(new)するのではなく、外部で用意して注入
サービスコンテナ
DIをまとめて担う
Blade (テンプレートエンジン)
拡張子 blade.php
{{}}エコー文は、XSS攻撃を防ぐために、HPのhtmlspecialchars関数を通して自動的に送信される。
@csrf
CSRF保護ミドルウェアがリクエストをバリデートできるように、フォームへ隠しCSRFトークンフィールドが自動生成される。
記述方法
ルーティング->コントローラ->ビュー
use App\Http\Controllers\TestController; //ファイル内で使用可能に
Route::get('tests/test', [TestController::class, 'index']); //配列で書く(バージョンで書き方が異なる)
public function index()
{
//view() ヘルパ関数 フォルダ名.ファイル名
return view('tests.test');
}
test
読み込む↓
use App/Models/Test; //Testモデルを読み込む
php function index()
{
$values = Test::all(): //全件取得
//dd($values); //処理を止めて内容を確認できる
//compact()でView側に変数を渡すと楽
return view('tests.test', compact('values'));
}
``