使用laravel 5.1 eloquent(仅一个查询)插入重复键更新

时间:2016-12-14 14:04:10

标签: php mysql eloquent laravel-5.1

我想在没有进行两次查询的情况下使用雄辩的模型执行重复密钥更新的插入,问题是当我使用updateOrCreate()时它会进行两次查询

 /**
 * 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 = [])
{
    $instance = static::firstOrNew($attributes);
    //second query
    $instance->fill($values)->save();

    return $instance;
}
public static function firstOrNew(array $attributes)
{
    //first query
    if (! is_null($instance = (new static)->newQueryWithoutScopes()->where($attributes)->first())) {
        return $instance;
    }

    return new static($attributes);
}

谢谢:)

0 个答案:

没有答案