私はLaravelにいくつかの古いコードを書き直しています。モデルが存在しない場合は、モデルを挿入して添付してください。
は私が購入とゲームと私はPurchaseControllerのstore
方法を書いてを管理するためのシステムを持っています。新規購入を作成するためのフォームには、購入に関するデータと、ゲームに関するデータを含む配列が含まれています。
ゲームと購入の間に多対多の関係があります。購入には多くのゲームが含まれ、ゲームは複数の購入にリンクされることがあります。
ゲームはデータベースに既に存在している可能性があります。私は、次の操作を実行したい:
- データベース(この部分は私がすでに整理しまった;)に新規購入を挿入し、ゲームのPOSTさ名前が既にデータベースに存在する場合)
- チェック。
- 存在する場合は、新しく挿入した購入に添付します。存在しない場合は、それを挿入し、新しく挿入した購入に添付します。
ゲームがデータベースに既に存在していて、購入にアタッチするだけでは、ゲームを更新したくないです。
私はfirstOrCreate
を調べましたが、それは私がしたいことをしません。それはあなたがそれを供給するすべての引数をチェックするだけで、それは名前(基本的にthis issue)だけをチェックすることはできません。
The undocumented method updateOrCreate
は、2つの配列(チェックする属性と挿入する値)を受け入れますが、レコードが存在する場合はそれを更新しますが、これは必要なものではありません。
Eloquentでこれを行うには、いいやり方がありますか?そうでない限り、ゲームがデータベースに存在するかどうかをチェックするコードを手動で書く必要がありますか?
EDIT:
これはLaravel 5.3のすべての後firstOrCreate
で可能であると思われる:https://github.com/laravel/framework/pull/13236
どのように世界の誰かがデータベースにないゲームを購入するのですか? – Borjante
私が不明な場合は申し訳ありません。これはウェブショップではなく、ゲームライブラリを管理するためのシステムです。ゲームがデータベースにない場合、それは挿入すべき新しいゲームです。 – Compizfox
Eloquentをすべて使用する必要はありません。 'DB :: raw(" INSERT IGNORE INTO ... "は依然として利用可能であり、データベースにその仕事をさせています)。 –