symfony/ai-doctrine-message-store
Doctrine DBAL message store integration for Symfony AI Chat. Persist and retrieve chat messages in a relational database using Doctrine DBAL, enabling durable conversation history and easy storage configuration within Symfony applications.
doctrine/dbal package). No architectural conflicts.MessageStoreInterface with Laravel’s event/queue systems.DatabaseManager directly (losing some Symfony AI features).laravel-ai packages (if available).ai_messages vs. user_messages).spatie/laravel-activitylog for message storage).Why Relational Storage?
Symfony Dependency Acceptance
laravel-ai)?Schema Strategy
Performance Requirements
Long-Term Maintenance
spatie/laravel-ai) that reduce dependency risk?| Component | Laravel Equivalent/Adapter Needed | Notes |
|---|---|---|
| Doctrine DBAL | doctrine/dbal (v3.x) |
Native support; no changes required. |
| PSR-15 Message Store | Custom wrapper or Symfony’s Messenger |
Laravel lacks PSR-15; bridge required. |
| Symfony AI Chat | Replace with laravel-ai or custom LLM service |
Avoid Symfony dependency bloat. |
| Schema Migrations | Laravel Schema builder or Doctrine Migrations |
Prefer Laravel’s for consistency. |
| Recommended Stack | Database: PostgreSQL/MySQL (via DBAL) | |
AI Framework: laravel-ai or custom service |
||
| Message Storage: Hybrid (DBAL for queries, Redis for volume) |
Phase 1: Feasibility Test (1–2 weeks)
composer require doctrine/dbal symfony/ai-doctrine-message-store symfony/messenger
// app/Providers/AppServiceProvider.php
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
public function register()
{
$this->app->singleton(MessageBusInterface::class, function ($app) {
$store = new \Symfony\AI\DoctrineMessageStore\DoctrineDBALMessageStore(
$app['db']->connection()->getDoctrineConnection()
);
return new \Symfony\Component\Messenger\MessageBus([$store]);
});
}
Phase 2: Schema Integration (1 week)
php artisan make:migration create_ai_messages_table --table=ai_messages
Phase 3: AI Integration (2–3 weeks)
// config/ai.php
'message_store' => [
'primary' => \App\Services\HybridMessageStore::class,
'drivers' => [
'dbal' => \Symfony\AI\DoctrineMessageStore\DoctrineDBALMessageStore::class,
'redis' => \Spatie\RedisMessageStore\RedisMessageStore::class,
],
];
HybridMessageStore to route messages based on volume/latency needs.Phase 4: Monitoring (Ongoing)
DB::listen for slow queries).schema:update checks).pg_stat_activity for PostgreSQL).doctrine/dbal.LaravelMessageStore implementing MessageStoreInterface).Messenger (if already in stack) to consume PSR-15 messages.DatabaseManager directly (simpler but loses Symfony AI features).laravel-ai packages (if available).doctrine/dbal is installed and configured.How can I help you explore Laravel packages today?