Download the PHP package staudenmeir/laravel-upsert without Composer
On this page you can find all versions of the php package staudenmeir/laravel-upsert. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package laravel-upsert
[!IMPORTANT] The package's code has been merged into Laravel 8.10+ and UPSERT queries are now supported natively.
Introduction
This Laravel extension adds support for INSERT & UPDATE (UPSERT) and INSERT IGNORE to the query builder and Eloquent.
Supports Laravel 5.5–8.9.
Compatibility
- MySQL 5.1+: INSERT ON DUPLICATE KEY UPDATE
- MariaDB 5.1+: INSERT ON DUPLICATE KEY UPDATE
- PostgreSQL 9.5+: INSERT ON CONFLICT
- SQLite 3.24.0+: INSERT ON CONFLICT
- SQL Server 2008+: MERGE
Installation
composer require staudenmeir/laravel-upsert:"^1.0"
Usage
- INSERT & UPDATE (UPSERT)
- INSERT IGNORE
- Eloquent
- Lumen
INSERT & UPDATE (UPSERT)
Consider this users
table with a unique username
column:
Use upsert()
to insert a new user or update the existing one. In this example, an inactive user will be reactivated and the updated_at
timestamp will be updated:
Provide the values to be inserted as the first argument. This can be a single record or multiple records.
The second argument is the column(s) that uniquely identify records. All databases except SQL Server require these columns to have a PRIMARY
or UNIQUE
index.
Provide the columns to be the updated as the third argument (optional). By default, all columns will be updated. You can provide column names and key-value pairs with literals or raw expressions (see below).
As an example with a composite key and a raw expression, consider this table that counts visitors per post and day:
Use upsert()
to log visits. The query will create a new record per post and day or increment the existing view counter:
INSERT IGNORE
You can also insert records while ignoring duplicate-key errors:
SQL Server requires a second argument with the column(s) that uniquely identify records:
Eloquent
You can use UPSERT and INSERT IGNORE queries with Eloquent models.
In Laravel 5.5–5.7, this requires the HasUpsertQueries
trait:
If the model uses timestamps, upsert()
and insertIgnore()
will automatically add timestamps to the inserted values. upsert()
will also add updated_at
to the updated columns.
Lumen
If you are using Lumen, you have to instantiate the query builder manually:
In Eloquent, the HasUpsertQueries
trait is required for all versions of Lumen.
Contributing
Please see CODE OF CONDUCT for details.