PHP

Laravel

【Laravel】N+1問題とは?eager loading(with)で解決する

こんにちは、かつコーチです。前回はQuery Builderの基本を扱い、Eloquentとの使い分けを紹介しました。今回は、Eloquentでリレーションを扱う人が必ずと言っていいほど一度は踏む落とし穴、N+1問題を取り上げます。「画面表...
Laravel

【Laravel】Query Builderの基本:Eloquentを使わないクエリの書き方

こんにちは、かつコーチです。前回はFactoryでテストデータを効率よく作る方法を紹介しました。これまでの記事では Article::where(...) のようにEloquentモデルを経由してデータを取得してきましたが、実はLarave...
Laravel

【Laravel】Factoryでダミーデータを効率よく作る

こんにちは、かつコーチです。前回はSeederの3つの実装方法を紹介し、大量データにはFactoryとの組み合わせが向いていると触れました。今回はそのFactoryを詳しく掘り下げていきます。「テストデータを100件作りたいけど、1件ずつ書...
Laravel

【Laravel】Seederでテストデータを入れる3つの方法

こんにちは、かつコーチです。前回は多対多リレーション(belongsToMany)を扱いました。実際にリレーションの動きを確認しようとすると、記事・タグ・中間テーブルにそれぞれデータを手入力するのは大変ですよね。そこで今回は、テストデータを...
Laravel

【Laravel】多対多リレーション(belongsToMany)を実装する

こんにちは、かつコーチです。前回は hasMany と belongsTo を使って、1対多のリレーションを扱いました。今回は、Eloquentのリレーションの中でもつまずく人が多い「多対多(belongsToMany)」を扱います。「1つ...
Laravel

【Laravel】Eloquentのリレーション:hasMany・belongsToの使い分け

こんにちは、かつコーチです。前回はEloquentの基本操作を解説しました。実際のアプリケーションでは、「投稿」と「コメント」、「ユーザー」と「投稿」のように、テーブル同士が関連し合っているケースがほとんどです。今回は、Eloquentでテ...
Laravel

【Laravel】Eloquentとは?Laravelの顔ともいえるORMを理解する

こんにちは、かつコーチです。前回はMigrationを使って、テーブル構造をコードで管理する方法を解説しました。テーブルが作れるようになったら、次はそのテーブルのデータをPHPのコードから読み書きする番です。今回はLaravelの中でも特に...
Laravel

【Laravel】Migrationの基本:テーブルをコードで管理する

こんにちは、かつコーチです。前回まででルーティングとコントローラの基本的な応用を見てきました。ここからはデータベース編に入っていきます。最初のテーマは、Laravelでテーブルを作成・変更するときに欠かせない「Migration(マイグレー...
Laravel

【Laravel】Route Model Bindingで自動的にモデルを取得する

こんにちは、かつコーチです。前回はNamed Routeについて解説しました。今回は、URLのパラメータを扱うコントローラをもっとシンプルに書ける「Route Model Binding」を紹介します。「IDを受け取って、モデルを検索して、...
Laravel

【Laravel】Named Routeでルートに名前をつけるメリット

こんにちは、かつコーチです。前回は、リダイレクト処理のパターンについて解説しました。その中で redirect('/mypage') のようにURLを直接書くコードが何度か出てきましたが、実は現場のLaravelコードではあまり見かけません...
Laravel

【Laravel】リダイレクト処理のパターン集

こんにちは、かつコーチです。前回は、セッションとフラッシュメッセージの使い方を解説しました。ここまでで、フォームを受け取り、バリデーションし、結果をフラッシュメッセージとして保存する、という一連の流れが揃いました。最後に必要になるのが、「処...
Laravel

【Laravel】セッション・フラッシュメッセージの使い方

こんにちは、かつコーチです。前回は、バリデーションで入力値をチェックする方法を解説しました。バリデーションを通過して無事にデータが保存できたとき、「登録が完了しました」というメッセージを画面に表示したい場面はとても多いです。このとき使われる...
Laravel

【Laravel】Laravelのバリデーション(Validation)の書き方

こんにちは、かつコーチです。前回は、Requestオブジェクトでフォームの値を受け取る方法を解説しました。ただ、値を受け取れるようになっても、それがそのまま「正しい値」とは限りません。メールアドレスの形式が違っていたり、必須項目が空だったり...
Laravel

【Laravel】Requestオブジェクトでフォームの値を受け取る

こんにちは、かつコーチです。前回は、Bladeコンポーネントで画面のパーツを再利用する方法を解説しました。画面が作れるようになったら、次に気になるのは「フォームに入力された値を、コントローラ側でどう受け取るか」ですよね。PHPの生の書き方だ...
PHP

【Laravel】Bladeコンポーネントで再利用可能なパーツを作る

こんにちは、かつコーチです。前回は、Bladeテンプレートの基本文法を解説しました。@if や @foreach、@extends などを使えば、動的なHTMLはひと通り書けるようになります。ただ、実際に画面を作っていくと、同じ見た目のパー...
Laravel

【Laravel】Laravel10の機能を解説

こんにちは、かつコーチです。2023年2月にLarave10がリリースされました。その新機能と変更点について解説します。Laravel 9からLaravel 10にアップグレードされた際には、複数の新機能、改善点、さらにはメンテナンスのしや...
PHP

【PHP】なぜフレームワークを使うのか?Laravelを学ぶ前に知っておきたいこと

こんにちは、かつコーチです。久しぶりにPHPネタです。前回は、、、素のPHPで簡易的なルーティングとコントローラの仕組みを自作してみました。たった数ページの機能を作るだけでも、URLの振り分けやファイルの読み込み管理など、地味な手間がたくさ...
JavaScript

【Laravel】Vue + Inertiaで画像アップロードする方法

こんにちは、かつコーチです。今回は、LaravelのVuejs + Inertiaを使った画像のアップロード方法についてです。コード全体Index.vueで一覧画面と登録画面を一緒にしています。<script setup>import { ...
Laravel

【Laravel】Bladeテンプレートの基本文法

こんにちは、かつコーチです。前回はMiddlewareで共通処理を挟む仕組みを解説しました。Route → Controller → Middlewareと進み、ようやくアプリの「表側」、つまり画面の見た目を作る部分にたどり着きました。La...
Laravel

【Laravel】Middlewareとは?認証チェックなどの共通処理を挟む仕組み

こんにちは、かつコーチです。前回はControllerの作り方を解説しました。RouteとControllerでリクエストの処理ができるようになると、次に気になってくるのが「ログインしていない人にはこのページを見せたくない」といった共通のチ...