生涯未熟

プログラミングをちょこちょこと。

テーブルにレコードがあった場合Update、なかった場合Insertするベストな方法

Laravelでタイトルのことをやろうとする時、皆さんどうしてますか?

今まで僕は以下の様なやり方をしていました。



gist141e764fc4b8a7afc67f

良い方法が見つからなかったので今までこの方法で通してきましたが、もっとベストな方法がありました。


gist1b5e662bf5bcc4fd3fd6


すごいスッキリしました!
これどういうことかと言うと、firstOrNewで条件に合致したものがあればfirst()で取得し、
なければnewでインスタンス生成して返してくれることを使い、後の更新処理がinsertかupdateかに依らないようにしているのです。

やはりちゃんと公式の情報は読まないといけませんね・・・反省。


【追記】

TwitterでLaravel答えるマンさんに色々と教えて頂きました!


教えていただいたことを元に先ほどのコードを書き換えてみます!



gistcc16d69dd8b9000d4f77


Laravelの中身を見れば分かりますが、この書き方はfillを使うためモデルでfillableすることを忘れないで下さい。

参考:

Laravel4のEloquent ORMではまった件 - 終電23時15分って早くね?


また元の書き方もこんな風に書き換えられます。


gist2c72f9812323e743be88



ふぅーむ・・・色々と便利なものがありますな・・・
@localdiskさんありがとうございます!


【追記の追記】


というアドバイス頂きましたので、これを参考にさせていただくと


gist46596bfd15c0f6c4d8f6



gist8d2ac728005fd03ad944


とした方が良いみたいです!



データベース徹底攻略 (WEB+DB PRESS plus)
松信嘉範 羽生 章洋 ミック 奥野 幹也 松下 雅和 桑野 章弘 青木 峰郎 ひろせ まさあき 小林 篤 島田 慶樹
技術評論社
売り上げランキング: 82,784