2016-04-20 9 views
1

私はテーブルを持っています、ユニークな鍵はapp_id + channel_idですが、主キーはありません。私はLaravel雄弁モデルでlast_update_timeフィールドを更新/挿入するためにon duplicated key updateステートメントを使用したいLaravel 5.2の雄弁モデルの "重複キー更新"の書き方は?

は、私は私のモデルを書くべきか、updateOrCreate方法を見つけましたが、それは私のプロジェクトでは認識されないのですか? Laravelのドキュメントから

+0

これを確認してくださいhttps://laracasts.com/discuss/channels/general-discussion/insert-on-duplicate-key-update –

答えて

0

here最後の部分を参照) Laravelにおける2つの方法があります。

その他の作成方法

はあなたが属性を割り当てる質量モデルを作成するために使用することができます他の二つの方法がありますfirstOrCreateはとfirstOrNew。 firstOrCreateメソッドは、指定された列と値のペアを使用してデータベースレコードの検索を試みます。モデルがデータベース内に見つからない場合、レコードは指定された属性とともに挿入されます。

firstOrCreateのようなfirstOrNewメソッドは、指定された属性に一致するデータベース内のレコードの検索を試みます。ただし、モデルが見つからない場合は、新しいモデルインスタンスが返されます。 firstOrNewによって返されたモデルはまだデータベースに永続化されていないことに注意してください。

// Retrieve the flight by the attributes, or create it if it doesn't exist... 

$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']); 

// Retrieve the flight by the attributes, or instantiate a new instance... 

$flight = App\Flight::firstOrNew(['name' => 'Flight 10']); 
+0

なぜこの方法を使用できませんか? 'firstOrCreate'のように、私は' Illuminate \ Database \ Eloquent \ Model'のモデルを拡張しています – Phoenix

0

updateOrCreate(array $attributes, array $values = [])を試したことがありますか?

自動インクリメントidの列を持つテーブルを使用している場合は、最初の引数を持つアトリビュートを検索対象のアトリビュートで構成し、2番目のアトラクターを連想配列として使用できます新しい値で

updateOrCreateのメソッド定義を参照してください。