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();
- 参考
ざっと、よく使うものをメモ程度にまとめてみました。
それでは(´ω`)