Laravel5.1でのEloquentORMをCRUDでまとめてみた

Laravel5.1たぶん5.2もそんなに変わらないと思うんですが、よく自分でも忘れてしまうことがあるのでまとめ。

Eloquentを利用するときは、そもそも利用する前提のモデルを設計することがこつ。

登録、参照、更新、削除のメモをする前に、前提のモデル。

massassignでの登録をしたいので、 対象のフィールドを $fillable で宣言しています。モデルの登録で記述している例だと、massassignを使っているので、 $fillableを宣言していなくて、はまることがよくある話なので注意。

class User extends Eloquent {
    
    protected $primaryKey = 'id';
    
    protected $fillable = [
        'name',
        'age'
    ];
}
  • CRUD
    • 登録
    • 参照
    • 更新
    • 削除

モデルの登録

単純に登録(Insert)

User::create([
    'name' => 'テスト太郎',
    'age' => 25
]);

モデルがPersistenceレイヤーにない場合登録、あれば更新する

nameが'テスト太郎'さんがいれば、name'テスト次郎', age'28'で更新。 いなければ登録。

User::updateOrCreate([ ['name' => 'テスト太郎'], ['name' => 'テスト次郎', 'age' => 28] ]);

モデルの参照

Persistenceレイヤーから取り出しModelにマッピングする。

  • その1
$user = User::find(1);

Persistence層に該当のレコードが存在しない場合は null が返却される。

  • その2
$user = User::findOrFail(1);

該当のレコードが存在しない場合は、Illuminate\Database\Eloquent\ModelNotFoundException が発生する。 JavaなんかのORMではこっちのパターンが多い気がする。 これはこれで、catchしてそのまま404返すとか使いどころ次第で便利だと思う。

尚、Modelのプロパティは

$user->nameで取り出せる。

モデルの更新

参照するモデルを作ってから更新するのが王道でしょうか。

//更新対象のモデルをオブジェクト化
$user = User::find(1);

$user->name = 'テスト次郎';
$user->save();

モデルの削除

//削除対象のモデルをオブジェクト化
$user = User::find(1);

$user->delete();

ざっと、よく使うものをメモ程度にまとめてみました。

それでは(´ω`)