Eloquentでデータを登録・取得・更新・削除する
アプリの基本となる「登録・取得・更新・削除(CRUD)」をEloquentで行う方法を、ひとつずつ手を動かしながら学びます。
広告枠(記事上)— 本番では AdSense 広告が表示されます
データベース操作の基本は、登録・取得・更新・削除の4つです。それぞれの英語の頭文字をとって CRUD(クラッド) と呼びます。
| 記号 | 英語 | 意味 |
|---|---|---|
| C | Create | 登録(新しく作る) |
| R | Read | 取得(読み出す) |
| U | Update | 更新(書き換える) |
| D | Delete | 削除(消す) |
ほとんどのアプリは、この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 広告が表示されます