L

Eloquentでデータを登録・取得・更新・削除する

アプリの基本となる「登録・取得・更新・削除(CRUD)」をEloquentで行う方法を、ひとつずつ手を動かしながら学びます。

広告枠(記事上)— 本番では AdSense 広告が表示されます

データベース操作の基本は、登録・取得・更新・削除の4つです。それぞれの英語の頭文字をとって CRUD(クラッド) と呼びます。

記号英語意味
CCreate登録(新しく作る)
RRead取得(読み出す)
UUpdate更新(書き換える)
DDelete削除(消す)

ほとんどのアプリは、この4つの組み合わせでできています。Eloquent で順に見ていきましょう。

C:登録する

新しいデータを作るには、create() を使うのが手軽です。

use App\Models\Post;

Post::create([
    'title' => '初めての投稿',
    'body'  => '本文です。',
]);

ひと手間:$fillable の設定

create() で配列をまとめて登録するときは、安全のため「登録を許可する列」をモデルに書く必要があります。これを書かないとエラーになります。app/Models/Post.php に次を追加します。

class Post extends Model
{
    protected $fillable = ['title', 'body'];
}

これは「外部から一括で入れてよいのは title と body だけ」という指定で、意図しない列の書き換えを防ぐ安全装置です。

メモ: Laravel 13 で自動生成される User モデルを見ると、protected $fillable の代わりに #[Fillable(['name', 'email', 'password'])] という新しい書き方(属性/アトリビュート)が使われています。どちらでも動きますが、本講座では分かりやすい protected $fillable で統一します。

R:取得する

データを読み出す方法はいくつかあります。

$posts = Post::all();        // 全件
$post  = Post::find(1);      // id=1 の1件
$latest = Post::latest()->first(); // 最新の1件

条件で絞り込むには where() を使います。

// title が「初めての投稿」のものを取得
$posts = Post::where('title', '初めての投稿')->get();

where() で条件を指定し、最後に get() で取り出す、という形が基本です。

U:更新する

更新は「取得 → 値を変える → 保存」の3ステップです。

$post = Post::find(1);   // ① 取得
$post->title = '修正後のタイトル'; // ② 値を変える
$post->save();           // ③ 保存

save() を呼んで初めてデータベースに反映されます。

D:削除する

削除も「取得 → 削除」です。

$post = Post::find(1);
$post->delete();

まとめ

  • データ操作の基本は CRUD(Create / Read / Update / Delete)。
  • 登録は Post::create([...])。事前にモデルへ $fillable を設定する(安全装置)。
  • 取得は all() / find() / where(...)->get()
  • 更新は「取得 → 値変更 → save()」、削除は「取得 → delete()」。
  • 次の単元では、**テーブル同士をつなぐ「リレーション」**を学びます。
広告枠(記事下)— 本番では AdSense 広告が表示されます