前回は 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(テーブル作成)
を解説します。
ここでは
- テーブル作成
- カラム定義
- マイグレーション実行
などを詳しく説明します。


コメント