Eloquentについて

2018/10/12

mainvisual

Laravelに実装されているEloquent(エロクエント)と呼ばれるデーター操作について学びます。

 

Eloquentについて

Eloquentとはデータベースとモデルを対応づける機能です。

モデルコントローラに記述します。

データベースやテーブル自体に関する設定はモデルに記述します。

レコードの出し入れに関してはコントローラに記述します。

 

モデルの作成

Eloquentを利用するにはモデルの作成が必要です。

Artisanコマンドで作成することができます。

php artisan make:model User

上記のコマンドでUserモデルが作成されます。

作成される場所はappディレクトリ直下です。

img1

モデルのファイルを開くと以下のようになっています。

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

>> Twitter をフォローする

 

-基礎知識