LaravelのEloquent ORM(データベース操作の基本) – 7/12

前回は Bladeテンプレート を解説しました。

これで

  • 画面表示(View)
  • 処理(Controller)

ができるようになりました。

次に必要になるのが

データの保存・取得

です。

Laravelではこれを Eloquent ORM(イロクアントORM) で行います。

この記事では次の内容を解説します。

  • ORMとは何か
  • Eloquentの基本
  • モデル(Model)
  • データ取得
  • データ保存
  • クエリの書き方

ORMとは

ORMとは

データベースをオブジェクトとして扱う仕組み

です。

通常のSQL

SELECT * FROM users;

Laravelでは

User::all();

のように書けます。

つまり

SQLを書かなくてもDB操作できる

のがORMです。


Eloquentとは

EloquentはLaravelに標準搭載されているORMです。

特徴

  • シンプル
  • 書きやすい
  • 可読性が高い

Laravel開発では必ず使う機能です。


モデル(Model)

Eloquentでは Model を使います。

Modelとは

データベースのテーブルを表すクラス

です。


モデルの作成

php artisan make:model User

作成場所

app/Models/User.php

モデルの例

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
}

テーブルとの関係

Laravelでは

User → usersテーブル

と自動で対応します。


データ取得

全件取得

$users = User::all();

1件取得

$user = User::find(1);

条件検索

$users = User::where('age', '>', 20)->get();

1件だけ取得

$user = User::where('name', 'Taro')->first();

Controllerで使う

public function index()
{
    $users = User::all();

    return view('users.index', [
        'users' => $users
    ]);
}

Bladeで表示

@foreach ($users as $user)
    <p>{{ $user->name }}</p>
@endforeach

データの保存

新規作成

$user = new User();
$user->name = "Taro";
$user->age = 20;
$user->save();

一括代入

User::create([
    'name' => 'Taro',
    'age' => 20
]);

※注意
Modelに設定が必要

protected $fillable = ['name', 'age'];

データ更新

$user = User::find(1);
$user->name = "Jiro";
$user->save();

データ削除

$user = User::find(1);
$user->delete();

クエリビルダ

Eloquentはチェーンで書けます。

$users = User::where('age', '>', 20)
    ->orderBy('name', 'asc')
    ->get();

よく使うメソッド

メソッド説明
all()全件取得
find()ID検索
where()条件検索
get()取得
first()1件取得

マイグレーションとの関係

データベースの構造は

migration

で管理します。

php artisan migrate

実務での使い方

Eloquentは次の場面で使われます。

  • ユーザー管理
  • 商品管理
  • 投稿機能
  • APIデータ取得

APIでの利用

Laravel + React / Vue の場合

Laravel → API
React / Vue → フロント

Controller

return response()->json(User::all());

Eloquentのメリット

  • SQLを書かなくてよい
  • 可読性が高い
  • 学習コストが低い

注意点


N+1問題

User::all()

だけだとパフォーマンス問題が出る場合があります。


fillable設定

protected $fillable

を忘れると保存できません。


まとめ

この記事では Eloquent ORM を解説しました。

重要なポイント

  • Model = テーブル
  • all / find / where を使う
  • save / create で保存
  • Controllerと組み合わせる

Eloquentを理解すると

データ操作

ができるようになります。


次の記事

次回は

LaravelのMigration(テーブル作成)

を解説します。

ここでは

  • テーブル作成
  • カラム定義
  • マイグレーション実行

などを詳しく説明します。

コメント

タイトルとURLをコピーしました