Use Supabase with Laravel
Learn how to create a PHP Laravel project, connect it to your Supabase Postgres database, and configure user authentication.
Create a Laravel Project
Make sure your PHP and Composer versions are up to date, then use composer create-project
to scaffold a new Laravel project.
See the Laravel docs for more details.
Terminal
1composer create-project laravel/laravel example-app
Install the Authentication template
Install Laravel Breeze, a simple implementation of all of Laravel's authentication features.
Terminal
12composer require laravel/breeze --devphp artisan breeze:install
Set up the Postgres connection details
Go to database.new and create a new Supabase project. Save your database password securely.
When your project is up and running, navigate to your project dashboard and click on Connect.
Look for the Session Pooler connection string and copy the string. You will need to replace the Password with your saved database password. You can reset your database password in your database settings if you do not have it.
If you're in an IPv6 environment or have the IPv4 Add-On, you can use the direct connection string instead of Supavisor in Session mode.
.env
12DB_CONNECTION=pgsqlDB_URL=postgres://postgres.xxxx:password@xxxx.pooler.supabase.com:5432/postgres
Change the default schema
By default Laravel uses the public
schema. We recommend changing this as Supabase exposes the public
schema as a data API.
You can change the schema of your Laravel application by modifying the search_path
variable app/config/database.php
.
The schema you specify in search_path
has to exist on Supabase. You can create a new schema from the Table Editor.
app/config/database.php
1234567891011121314'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DB_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'laravel'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'charset' => env('DB_CHARSET', 'utf8'), 'prefix' => '', 'prefix_indexes' => true, 'search_path' => 'laravel', 'sslmode' => 'prefer',],
Run the database migrations
Laravel ships with database migration files that set up the required tables for Laravel Authentication and User Management.
Note: Laravel does not use Supabase Auth but rather implements its own authentication system!
Terminal
1php artisan migrate
Start the app
Run the development server. Go to http://127.0.0.1:8000 in a browser to see your application. You can also navigate to http://127.0.0.1:8000/register and http://127.0.0.1:8000/login to register and log in users.
Terminal
1php artisan serve