Documentation Index
Fetch the complete documentation index at: https://docs.vectorify.ai/llms.txt
Use this file to discover all available pages before exploring further.
The config/vectorify.php file is the central mechanism for defining how Laravel models are processed and upserted to Vectorify. Through a declarative configuration file, it handles collection (table) definitions, column mappings, metadata extraction, and tenancy configuration.
Global Settings
The configuration file contains several global settings that affect the entire package behaviour:
| Setting | Purpose |
|---|
api_key | Authentication token for Vectorify |
tenancy | Tenancy mode: single , multi:column, multi:domain |
collections | Array of collection definitions |
Collections
As described in the concepts page, collections define how Laravel models are synchronized with Vectorify and can use three different syntax patterns. Each collection specifies the data source, field mappings, transformations, and metadata definitions.
Simple Model Reference
The simplest collection configuration references a model class:
'collections' => [
\App\Models\Invoice::class,
]
This approach uses the model’s $fillable or a custom $vectorify property as the column list.
Resource Class Integration
The resource configuration allows using Laravel API Resources for data transformation:
'collections' => [
'invoices' => [
'query' => fn () => \App\Models\Invoice::query()->with('customer'),
'resource' => \App\Http\Resources\InvoiceResource::class,
'metadata' => [
'customer_name' => [
'type' => 'string',
],
'status' => [
'type' => 'enum',
'options' => ['draft', 'sent', 'paid'],
],
'due_date' => [
'type' => 'datetime',
],
],
],
],
query is a callable which returns Illuminate\Database\Eloquent\Builder.
Named Model Columns
Complex collections use named keys with configuration arrays:
'collections' => [
'invoices' => [
'query' => fn () => \App\Models\Invoice::query()->with('customer'),
'columns' => [
'customer' => [
'relationship' => true,
'columns' => [
'name' => [
'alias' => 'customer_name',
'metadata' => true,
'type' => 'string',
],
],
],
'status' => [
'metadata' => true,
'type' => 'enum',
'options' => ['draft', 'sent', 'paid'],
],
'amount',
'currency_code' => [
'alias' => 'currency',
],
'due_at' => [
'alias' => 'due_date'
'format' => 'Y-m-d',
'metadata' => true,
'type' => 'datetime',
],
],
],
],
query is a callable which returns Illuminate\Database\Eloquent\Builder.
Column Configuration
Complex columns use arrays to specify transformation and metadata options:
| Option | Purpose | Example |
|---|
alias | Rename field in output | 'alias' => 'customer_name' |
data | Include in data payload | 'data' => false |
type | Data type for formatting | 'type' => 'datetime' |
format | Date/time formatting | 'format' => 'Y-m-d' |
metadata | Include in metadata | 'metadata' => true |
tenant | Use for multi-tenancy | 'tenant' => true |
relationship | Define a relationship | 'relationship' => true |
Relationship Configuration
Relationships are configured using nested column structures:
'customer' => [
'relationship' => true,
'foreign_key' => 'customer_id', // optional
'columns' => [
'name' => [
'alias' => 'customer_name',
'metadata' => true,
],
],
],
Metadata defines additional filterable attributes that are stored separately from the row data.
Metadata can be defined at the column level using the metadata flag:
'status' => [
'metadata' => true,
'type' => 'enum',
'options' => ['draft', 'sent', 'paid'],
],
Alternatively, metadata can be defined globally, especially when using resource class:
'metadata' => [
'customer_name' => [
'type' => 'string',
],
'status' => [
'type' => 'enum',
'options' => ['draft', 'sent', 'paid'],
],
'due_date' => [
'type' => 'datetime',
],
],
Supported metadata types include:
| Type | Purpose | Additional Config |
|---|
string | Text and numeric values | None |
datetime | Date/time values | format option |
enum | Enumerated values | options array |