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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。