更新: 2014 年 8 月 27 日 - [updateOrCreate
コアに組み込まれています...]
万一、まだこれに出くわしている場合に備えて...これを書いてから数週間後、これが実際にはLaravelのEloquentのコアの一部であることがわかりました...
Eloquent の同等のメソッドを掘り下げます。ここで見ることができます:
https://github.com/laravel/framework/blob/4.2/src/Illuminate/Database/Eloquent/Model.php#L553
オン:570 および:553
/**
* Create or update a record matching the attributes, and fill it with values.
*
* @param array $attributes
* @param array $values
* @return static
*/
public static function updateOrCreate(array $attributes, array $values = array())
{
$instance = static::firstOrNew($attributes);
$instance->fill($values)->save();
return $instance;
}
以下の古い回答
次のような方法でこれを行うための組み込みの L4 機能があるかどうか疑問に思っています。
$row = DB::table('table')->where('id', '=', $id)->first();
// Fancy field => data assignments here
$row->save();
私は数週間前にこのメソッドを作成しました...
// Within a Model extends Eloquent
public static function createOrUpdate($formatted_array) {
$row = Model::find($formatted_array['id']);
if ($row === null) {
Model::create($formatted_array);
Session::flash('footer_message', "CREATED");
} else {
$row->update($formatted_array);
Session::flash('footer_message', "EXISITING");
}
$affected_row = Model::find($formatted_array['id']);
return $affected_row;
}
お役に立てば幸いです。誰かが共有できるものがあれば、これに代わるものを見てみたいです。@erikthedev_