2018/10/12
Laravelに実装されているEloquent(エロクエント)と呼ばれるデーター操作について学びます。
Eloquentについて
Eloquentとはデータベースとモデルを対応づける機能です。
モデルやコントローラに記述します。
データベースやテーブル自体に関する設定はモデルに記述します。
レコードの出し入れに関してはコントローラに記述します。
モデルの作成
Eloquentを利用するにはモデルの作成が必要です。
Artisanコマンドで作成することができます。
php artisan make:model User
上記のコマンドでUserモデルが作成されます。
作成される場所はappディレクトリ直下です。
モデルのファイルを開くと以下のようになっています。
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)にしたい場合は
<?php : class User extends Model { protected $table = 'user_admin'; }
となります。
Eloquentでのデータベースの操作
レコードの一覧表示
全レコードを取得する場合はallメソッドを使います。
public function index() { $users = User::all(); return view('user.index')->with('user', $user); }
取得したレコード結果を表示させる場合は
: foreach ($users as $user) { echo $user->name; } :
foreachでループ処理させます。
レコードを指定して表示
findメソッド
主キーで指定したレコードを一つだけ取得する場合に使います。
public function show($id) { $user = User::find($id); return view('users.show')->with('user', $user); }
findOrFailメソッド
該当するレコードが見つからない場合例外を投げてくれます。
public function show($id) { $user = User::findOrFail($id); return view('users.show')->with('user', $user); }
whereメソッド
クエリー条件でマッチしたレコードだけ抽出。
public function show($pref) { $user = User::where('pref',$pref)->get(); return view('users.show')->with('user', $user); }
firstメソッド
最初の1レコードだけを取得。
public function show($pref) { $user = User::where('pref',$pref)->first(); return view('users.show')->with('user', $user); }
countメソッド
集計をするときに使います。
public function show($pref) { $user = User::where('pref',$pref)->count(); return view('users.show')->with('user', $user); }
レコードの追加
オブジェクト指向がわかっているとすぐに理解できると思います。
1) モデルのインスタンスを作成
2) プロパティに値を代入
3) saveメソッドを実行
public function store(UserRequest $request) { $user = new User(); $user->name = $request->name; $user->save(); : }
レコードの更新
最初にfindOrFailメソッドでレコードを指定します。
あとはレコードの追加と同じです。
public function store(UserRequest $request) { $user = User::findOrFail($id); $user->name = $request->name; $user->save(); : }
レコードの削除
削除の場合はレコードを指定してdeleteメソッドを使います。
public function destroy($id) { $user = User::findOrFail($id); $user->delete(); : }
Eloquentについては以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。