Docs/Guides/Laravel

Connect with Laravel

Configure Laravel to use PhoenixDB as your PostgreSQL database.

Requirements

  • PHP 8.1+ with pdo_pgsql extension
  • Laravel 10+ (or any recent version)
  • PhoenixDB database created

Environment Configuration

Update your .env file:

.env
DB_CONNECTION=pgsql
DB_HOST=abc123.server1.phoenixdb.space
DB_PORT=5432
DB_DATABASE=mydb
DB_USERNAME=postgres
DB_PASSWORD=YOUR_PASSWORD

# Or use DATABASE_URL
DATABASE_URL="postgresql://postgres:YOUR_PASSWORD@abc123.server1.phoenixdb.space:5432/mydb?sslmode=require"

Database Configuration

Update config/database.php for SSL:

config/database.php
'pgsql' => [
    'driver' => 'pgsql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '5432'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'prefix' => '',
    'prefix_indexes' => true,
    'search_path' => 'public',
    'sslmode' => 'require',
],

Test Connection

Verify your connection with Artisan:

php artisan tinker
>>> DB::connection()->getPdo();

If successful, you'll see the PDO object without errors.

Run Migrations

Run your Laravel migrations:

php artisan migrate

Eloquent Example

app/Http/Controllers/UserController.php
<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return response()->json($users);
    }

    public function store(Request $request)
    {
        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);
        
        return response()->json($user, 201);
    }
}

Query Builder Example

use Illuminate\Support\Facades\DB;

// Select
$users = DB::table('users')
    ->where('active', true)
    ->orderBy('name')
    ->get();

// Insert
DB::table('users')->insert([
    'name' => 'John Doe',
    'email' => 'john@example.com',
    'created_at' => now(),
]);

// Raw query
$results = DB::select('SELECT * FROM users WHERE id = ?', [1]);

Tips

Connection Pooling

Laravel uses persistent connections by default. For high-traffic apps, consider using a connection pooler like PgBouncer.

Queue Configuration

If using database queues, make sure to set QUEUE_CONNECTION=databaseand run php artisan queue:table.