0Pricing
PHP Academy · レッスン

EloquentでCRUD

Eloquentのメソッドを使ってレコードの作成、読み取り、更新、削除を行います

「EloquentでCRUD」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

作成 — save()

モデルのインスタンスを作成し、属性を設定して save() を呼び出します。

<?php
$post = new Post();
$post->title = "Hello World";
$post->body  = "My first post";
$post->save(); // INSERT INTO posts ...

作成 — create()

Model::create() は一括代入を使用して、1 行でレコードを挿入します。$fillable の設定が必要です。

<?php
$post = Post::create([
    "title" => "Hello World",
    "body"  => "My first post",
    "user_id" => auth()->id(),
]);

firstOrCreate と updateOrCreate

firstOrCreate() は一致するレコードを検索し、なければ作成します。updateOrCreate() は一致するレコードを検索して更新し、なければ作成します。

<?php
// Find or create:
$tag = Tag::firstOrCreate(["name" => "PHP"]);

// Update or create:
$setting = Setting::updateOrCreate(
    ["key" => "theme"],
    ["value" => "dark"]
);

読み取り — all()

すべての行を Eloquent Collection として取得します。

<?php
$posts = Post::all(); // SELECT * FROM posts
foreach ($posts as $post) {
    echo $post->title;
}

読み取り — find()

主キーでレコードを検索します。見つからない場合は null を返します。findOrFail() は見つからない場合に 404 例外をスローします。

<?php
$post = Post::find(1);
$post = Post::findOrFail(1); // throws ModelNotFoundException if missing

読み取り — where()

where() 句でレコードを絞り込みます。複数の条件を連結できます。

<?php
$published = Post::where("is_published", true)
                 ->where("user_id", $userId)
                 ->orderBy("created_at", "desc")
                 ->get();

更新 — save()

既存のモデルの属性を変更して save() を呼び出すと、UPDATE が生成されます。

<?php
$post = Post::findOrFail(1);
$post->title = "Updated Title";
$post->save(); // UPDATE posts SET title=... WHERE id=1

更新 — update()

クエリに一致する複数のレコードを、1 回の SQL 呼び出しで一括更新します。

<?php
Post::where("user_id", $userId)
    ->update(["is_published" => false]);

削除 — delete()

取得済みのモデルインスタンスを削除します。

<?php
$post = Post::findOrFail(1);
$post->delete(); // DELETE FROM posts WHERE id=1

削除 — destroy()

Post::destroy($id) はモデルを先に取得せず、主キーで削除します。

<?php
Post::destroy(1);
Post::destroy([1, 2, 3]); // delete multiple

ページネーション

paginate() を使用すると、自動的に LIMIT/OFFSET を適用するページネーターオブジェクトを返します。

<?php
$posts = Post::latest()->paginate(15);
// In Blade: {{ $posts->links() }}

まとめ

Eloquent では、挿入に create() / save()、読み取りに find() / where()、更新に save() / update()、削除に delete() / destroy() を使用します。

確認問題

レコードが見つからない場合に例外をスローするメソッドはどれですか?

よくある質問

「EloquentでCRUD」レッスンは無料ですか?

はい。「EloquentでCRUD」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「EloquentでCRUD」で何を学びますか?

Eloquentのメソッドを使ってレコードの作成、読み取り、更新、削除を行います ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「EloquentでCRUD」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Eloquentモデルとマイグレーション
  2. EloquentでCRUD
  3. Eloquentのリレーションシップ
  4. Eager Loadingとクエリスコープ
← PHP Academyに戻る