生涯未熟

生涯未熟

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

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

2014年の非常に古い情報となります。
現行のLaravelではまた別の方法があるかもしれませんので、ご注意ください。


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

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


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


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

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


【追記】

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


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



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

参考:

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


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

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


【追記の追記】


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

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

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