Download the PHP package aiven/aiven-laravel without Composer
On this page you can find all versions of the php package aiven/aiven-laravel. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download aiven/aiven-laravel
More information about aiven/aiven-laravel
Files in aiven/aiven-laravel
Package aiven-laravel
Short Description Artisan helpers for working with Aiven databases and Laravel
License Apache-2.0
Informations about the package aiven-laravel
Aiven Commands for Laravel
✨ Add some Aiven magic to your Laravel project ✨
This Laravel package provides some aiven
commands for artisan
to help with managing your development databases and producing the correct configuration to use with them. This version supports both MySQL and PostgreSQL.
Use the commands to:
- List the Aiven services in your project
- Power your databases on and off from
artisan
, so you don't leave the meter running when you're not working - Get database config you can paste straight into your
.env
file or environment.
Getting started
Install the package with Composer:
You will need an Aiven account - sign up for a free trial if you don't have one already. Go ahead and create the database(s) you'll be using in your project through the web interface, or investigate the Aiven CLI.
Get an auth token for your Aiven account, and set it as AIVEN_API_TOKEN
in your environment.
It's recommended to also set AIVEN_DEFAULT_PROJECT
as the project in your Aiven account that you'll be using services from (but you can also supply --project [projectname]
for all the commands instead if you like)
Usage
Get a list of the Aiven services (databases) available:
Get the environment variables to export or paste into .env
for a particular service:
When you use the
DATABASE_URL
in Laravel, you must remove the existingDB_HOST
,DB_PORT
, etc configuration so that it does not conflict.
Check the status of the service:
Power the service on or off:
It's useful to power things down when you're not using them so that you aren't being charged (even if you're still paying in trial credits!)
Datastore-specific setup
MySQL and PostgreSQL®
PHP is on good terms with relational databases, and Laravel makes this very straight forward.
-
Remove all the configuration entries from
.env
starting withDB_
- Paste the output of the
aiven:getconfig
command. For both MySQL and PostgreSQL, this is aDATABASE_URL
. For PostgreSQL, we need to tell Laravel we want to use Postgres (MySQL is the default) so the command also outputsDB_CONNECTION=pgsql
and this should also be included.
Redis™*
Redis™ needs some extra dependencies (see Laravel Redis docs), and then you can set the REDIS_URL
to the value returned by aiven:getconfig
.
OpenSearch® with Laravel Scout
This uses some Elasticsearch libraries because the OpenSearch project is a fork so they are reasonably compatible.
-
Use Laravel Scout
-
Add Explorer
- Pin your PHP elasticsearch library dependencies, I have this in
composer.json
:
The aiven:getconfig
command will give you just the connection string for an OpenSearch service; put this in the config/explorer.php
so that it looks something like this:
The Scout documentation has a good overview of how to make your models searchable, and the Explorer project adds commands to create the index.
Troubleshooting
MySQL primary key errors
Laravel's initial migrations assumes that your MySQL database doesn't enforce primary keys (see related bug for more info) - disable the mysql.sql_require_primary_key
setting on Aiven if you run into this.
Connection problems
If you add the config to your environment and still can't connect, check that you don't have other environment variables with names starting DB_
... values like DB_HOST
should be removed when you use the DATABASE_URL
field to connect.
Get in touch
Questions? Problems? Open an issue and let us know.
Trademarks
MySQL, OpenSearch, PostgreSQL and Laravel are trademarks and property of their respective owners. All product and service names used in this website are for identification purposes only and do not imply endorsement.
/* Redis is a trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd. Any use by Aiven Oy is for referential purposes only and does not indicate any sponsorship, endorsement or affiliation between Redis and Aiven Oy.