2018/10/12
Laravelに実装されているEloquent(エロクエント)と呼ばれるデーター操作について学びます。
Eloquentについて
Eloquentとはデータベースとモデルを対応づける機能です。
モデルやコントローラに記述します。
データベースやテーブル自体に関する設定はモデルに記述します。
レコードの出し入れに関してはコントローラに記述します。
モデルの作成
Eloquentを利用するにはモデルの作成が必要です。
Artisanコマンドで作成することができます。
1 | php artisan make :model User |
上記のコマンドでUserモデルが作成されます。
作成される場所はappディレクトリ直下です。
モデルのファイルを開くと以下のようになっています。
1 2 3 4 5 6 7 8 | namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { // } |
ここではデータベースやテーブル自体に関する設定について記述します。
よく使うプロパティは以下になります。
プロパティ | 説明 | 規定値 |
---|---|---|
$connection | どのDB接続するのか。onメソッドで動的に変更可 | |
$table | どのtableに対して処理するのか | モデル名の複数形 |
$primaryKey | 主キーの設定 | id |
$incrementing | 主キーをオートインクリメントするかどうか | true |
$timestamps | テーブルの作成、更新日時を自動更新 | true |
$fillable | 渡した属性を複数代入させるかどうか(columnに値を入れたい場合必須) | null |
デフォルトではクラス名を複数形の スネークケース にしたものがテーブル名として使用されます。
※スネークケース・・・スペースをアンダースコアに置き換えた表現。
この場合、usersテーブルに接続されます。
もし別のテーブル名(user_admin)にしたい場合は
1 2 3 4 5 6 | <?php : class User extends Model { protected $table = 'user_admin' ; } |
となります。
Eloquentでのデータベースの操作
レコードの一覧表示
全レコードを取得する場合はallメソッドを使います。
1 2 3 4 5 | public function index() { $users = User::all(); return view( 'user.index' )->with( 'user' , $user ); } |
取得したレコード結果を表示させる場合は
1 2 3 4 5 | : foreach ( $users as $user ) { echo $user ->name; } : |
foreachでループ処理させます。
レコードを指定して表示
findメソッド
主キーで指定したレコードを一つだけ取得する場合に使います。
1 2 3 4 5 | public function show( $id ) { $user = User::find( $id ); return view( 'users.show' )->with( 'user' , $user ); } |
findOrFailメソッド
該当するレコードが見つからない場合例外を投げてくれます。
1 2 3 4 5 | public function show( $id ) { $user = User::findOrFail( $id ); return view( 'users.show' )->with( 'user' , $user ); } |
whereメソッド
クエリー条件でマッチしたレコードだけ抽出。
1 2 3 4 5 | public function show( $pref ) { $user = User::where( 'pref' , $pref )->get(); return view( 'users.show' )->with( 'user' , $user ); } |
firstメソッド
最初の1レコードだけを取得。
1 2 3 4 5 | public function show( $pref ) { $user = User::where( 'pref' , $pref )->first(); return view( 'users.show' )->with( 'user' , $user ); } |
countメソッド
集計をするときに使います。
1 2 3 4 5 | public function show( $pref ) { $user = User::where( 'pref' , $pref )-> count (); return view( 'users.show' )->with( 'user' , $user ); } |
レコードの追加
オブジェクト指向がわかっているとすぐに理解できると思います。
1) モデルのインスタンスを作成
2) プロパティに値を代入
3) saveメソッドを実行
1 2 3 4 5 6 7 | public function store(UserRequest $request ) { $user = new User(); $user ->name = $request ->name; $user ->save(); : } |
レコードの更新
最初にfindOrFailメソッドでレコードを指定します。
あとはレコードの追加と同じです。
1 2 3 4 5 6 7 | public function store(UserRequest $request ) { $user = User::findOrFail( $id ); $user ->name = $request ->name; $user ->save(); : } |
レコードの削除
削除の場合はレコードを指定してdeleteメソッドを使います。
1 2 3 4 5 6 | public function destroy( $id ) { $user = User::findOrFail( $id ); $user -> delete (); : } |
Eloquentについては以上です。

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。