データベース

Laravel

【Laravel】Laravel 13のセマンティック検索(ベクトル検索)を試す

こんにちは、かつコーチです。Laravel 13の新機能の中でも、RAGアプリケーションを作りたいエンジニアから特に注目を集めているのがセマンティック検索(ベクトル検索)です。今回はwhereVectorSimilarTo()を実際に動かし...
Prisma

【Prisma】Prismaとは?

こんにちは、かつコーチです。Next.jsを使っていて、Prismaを使う機会が出て来たので、今回はPrismaについて解説します。Prismaは、TypeScriptとJavaScript向けの次世代ORM(Object-Relation...
Django

【Django】モデルの基本:フィールドタイプとCRUD操作

こんにちは、かつコーチです。前回はマイグレーションの流れを解説しました。今回はその前提となるモデル自体の書き方と、データの作成・取得・更新・削除、いわゆるCRUD操作の基本をまとめます。モデルとは何かPythonのクラスがテーブルの設計図に...
Laravel

【Laravel】Eloquentのキャスト・アクセサ・ミューテタの使い分け

こんにちは、かつコーチです。前回はソフトデリートによる安全な削除の仕組みを解説しました。今回は、Eloquentモデルの値を「取得するとき」「保存するとき」に自動加工できる3つの機能、キャスト・アクセサ・ミューテタを扱います。似たような役割...
CakePHP

【Laravel】ソフトデリート(SoftDeletes)の使い方

こんにちは、かつコーチです。前回はトランザクションでデータ整合性を守る方法を解説しました。今回は、削除処理を「取り消せる形」にしておくための機能、SoftDeletes(ソフトデリート)を扱います。「うっかり削除してしまった」というミスは、...
Laravel

【Laravel】トランザクション(DB::transaction)でデータ整合性を守る

こんにちは、かつコーチです。前回はページネーションの実装方法を解説しました。今回は、複数のテーブルを更新する処理で必ず意識しておきたい「トランザクション」を扱います。「一部だけ更新が成功して、一部だけ失敗する」という状態は、データベースの整...
Laravel

【Laravel】LengthAwarePaginatorでページネーションを実装する

こんにちは、かつコーチです。前回はN+1問題とeager loadingについて解説しました。今回は、一覧画面を作るときに必ずと言っていいほど必要になる「ページネーション」を扱います。Laravelにはpaginate()という便利なメソッ...
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(マイグレー...
PHP

【PHP】PHPでのDB接続、なぜこれが大変なのか

こんにちは、かつコーチです。前回の記事で、PHPだけを使って登録・一覧・更新・削除のCRUD処理を一通り実装しました。たった1つのusersテーブルを操作するだけなのに、db.php・insert.php・list.php・update.p...
PHP

【PHP】PHPだけでCRUD処理を実装してみる(登録・一覧・更新・削除)

こんにちは、かつコーチです。ここまでの3回で、PDOでのMySQL接続・データ取得・プリペアドステートメントによる安全なSQLの書き方を学んできました。今回はそれらを組み合わせて、Webアプリの基本であるCRUD処理を、PHPだけで一通り実...
PHP

【PHP】PDOでSQLを実行してデータを取得する方法

こんにちは、かつコーチです。前回の記事で、PDOを使ってMySQLに接続できるようになりました。接続できただけではまだ何もできないので、今回は実際にSQL文を実行して、sample_dbのusersテーブルからデータを取り出してみましょう。...
PHP

【PHP】PHPからMySQLに接続する:PDOの基本

こんにちは、かつコーチです。前回まででトレイトを扱い、PHPのオブジェクト指向まわりは一通り触れてきました。今回からは新しいテーマ、「データベース」に入っていきます。PHPだけでどれだけ動的なページを作れても、会員情報や投稿内容を保存する場...