Laravel Model::updateOrCreate
Добрый день народ.
Подскажите, кто знает, как работает Model::updateOrCreate()
в Laravel(4.2)
Источник: Stack Overflow на русском
Добрый день народ.
Подскажите, кто знает, как работает Model::updateOrCreate()
в Laravel(4.2)
Пытается найти первую запись на основании переданных $attributes
, если не найдет - создаст. Потом заполняет данными из $values
и сохраняет.
Пример использования:
$book = Book::updateOrCreate(
['isbn' => '9780451157485'],
['title' => 'Атлант расправил плечи']);
Если книги с указанным ISBN нет, то будет. В любом случае, title
будет таким, как указано.
Источник:
// vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:553,570
/**
* 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;
}
/**
* Get the first record matching the attributes or instantiate it.
*
* @param array $attributes
* @return static
*/
public static function firstOrNew(array $attributes)
{
if ( ! is_null($instance = static::where($attributes)->first()))
{
return $instance;
}
return new static($attributes);
}