Interface: LucidModel
Shape of the model static properties. The $ prefix is to denote special properties from the base model.
@note: Since the interface name appears next to the inherited model methods, we have to choose a succinct name
Extended by
Constructors
Constructor
new LucidModel(): LucidRow;Returns
LucidRow
Properties
| Property | Modifier | Type | Description |
|---|---|---|---|
$adapter | public | AdapterContract | Adapter to work as a bridge between query builder and the model |
$columnsDefinitions | public | Map<string, ModelColumnOptions> | A map of defined columns |
$computedDefinitions | public | Map<string, ComputedOptions> | A map of computed properties |
$hooks | public | Hooks<any> | Reference to hooks |
$keys | public | { attributesToColumns: ModelKeysContract; attributesToSerialized: ModelKeysContract; columnsToAttributes: ModelKeysContract; columnsToSerialized: ModelKeysContract; serializedToAttributes: ModelKeysContract; serializedToColumns: ModelKeysContract; } | A copy of internal keys mapping. One should be able to resolve between all key versions |
$keys.attributesToColumns | public | ModelKeysContract | - |
$keys.attributesToSerialized | public | ModelKeysContract | - |
$keys.columnsToAttributes | public | ModelKeysContract | - |
$keys.columnsToSerialized | public | ModelKeysContract | - |
$keys.serializedToAttributes | public | ModelKeysContract | - |
$keys.serializedToColumns | public | ModelKeysContract | - |
$relationsDefinitions | public | Map<string, RelationshipsContract> | A map of defined relationships |
booted | readonly | boolean | Whether or not model has been booted. After this model configurations are ignored |
connection? | public | string | Custom database connection to use |
namingStrategy | public | NamingStrategyContract | Naming strategy to use |
primaryKey | public | string | The primary key for finding unique referencing to a model |
selfAssignPrimaryKey | public | boolean | Self assign the primary instead of relying on the database to return it back |
table | public | string | Database table to use |
transaction | public | TransactionFn | Returns transaction client from the model. It is same as calling "db.transaction" |
Methods
$addColumn()
$addColumn(name: string, options: Partial<ColumnOptions>): ColumnOptions;Managing columns
Parameters
| Parameter | Type |
|---|---|
name | string |
options | Partial<ColumnOptions> |
Returns
ColumnOptions
$addComputed()
$addComputed(name: string, options: Partial<ComputedOptions>): ComputedOptions;Managing computed columns
Parameters
| Parameter | Type |
|---|---|
name | string |
options | Partial<ComputedOptions> |
Returns
$addRelation()
$addRelation(
name: string,
type: "hasOne" | "hasMany" | "belongsTo" | "manyToMany" | "hasManyThrough",
relatedModel: () => LucidModel,
options: ModelRelationOptions): void;Managing relationships
Parameters
| Parameter | Type |
|---|---|
name | string |
type | "hasOne" | "hasMany" | "belongsTo" | "manyToMany" | "hasManyThrough" |
relatedModel | () => LucidModel |
options | ModelRelationOptions |
Returns
void
$createFromAdapterResult()
$createFromAdapterResult<T>(
this: T,
result?: ModelObject,
sideloadAttributes?: ModelObject,
options?: ModelAdapterOptions):
| InstanceType<T>
| null;Creating model from adapter results
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
result? | ModelObject |
sideloadAttributes? | ModelObject |
options? | ModelAdapterOptions |
Returns
| InstanceType<T> | null
$createMultipleFromAdapterResult()
$createMultipleFromAdapterResult<T>(
this: T,
results: ModelObject[],
sideloadAttributes?: ModelObject,
options?: ModelAdapterOptions): InstanceType<T>[];Creating multiple model instances from an array of adapter result
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
results | ModelObject[] |
sideloadAttributes? | ModelObject |
options? | ModelAdapterOptions |
Returns
InstanceType<T>[]
$defineProperty()
$defineProperty<Model, Prop>(
this: Model,
propertyName: Prop,
defaultValue: Model[Prop],
strategy: "inherit" | "define" | (value: Model[Prop]) => Model[Prop]): void;Define a static property on the model using the inherit or define strategy.
Inherit strategy will clone the property from the parent model and will set it on the current model
Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Prop extends string | number | symbol |
Parameters
| Parameter | Type |
|---|---|
this | Model |
propertyName | Prop |
defaultValue | Model[Prop] |
strategy | "inherit" | "define" | (value: Model[Prop]) => Model[Prop] |
Returns
void
$getColumn()
$getColumn(name: string):
| ModelColumnOptions
| undefined;Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
| ModelColumnOptions | undefined
$getComputed()
$getComputed(name: string): ComputedOptions | undefined;Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
ComputedOptions | undefined
$getRelation()
Call Signature
$getRelation<Model, Name>(this: Model, name: Name): NonNullable<InstanceType<Model>[Name]> extends ModelRelations<LucidModel, LucidModel> ? NonNullable<NonNullable<InstanceType<Model>[Name]>>["client"]["relation"] : RelationshipsContract;Get relationship declaration
Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Name extends string | number | symbol |
Parameters
| Parameter | Type |
|---|---|
this | Model |
name | Name |
Returns
NonNullable<InstanceType<Model>[Name]> extends ModelRelations<LucidModel, LucidModel> ? NonNullable<NonNullable<InstanceType<Model>[Name]>>["client"]["relation"] : RelationshipsContract
Call Signature
$getRelation<Model>(this: Model, name: string): RelationshipsContract;Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | Model |
name | string |
Returns
RelationshipsContract
$hasColumn()
$hasColumn(name: string): boolean;Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
boolean
$hasComputed()
$hasComputed(name: string): boolean;Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
boolean
$hasRelation()
$hasRelation(name: string): boolean;Find if a relationship exists
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
boolean
after()
Call Signature
after<Model>(
this: Model,
event: "fetch",
handler: HooksHandler<InstanceType<Model>[], "fetch">): void;Register an after hook
Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | Model |
event | "fetch" |
handler | HooksHandler<InstanceType<Model>[], "fetch"> |
Returns
void
Call Signature
after<Model>(
this: Model,
event: "paginate",
handler: HooksHandler<ModelPaginatorContract<InstanceType<Model>>, "paginate">): void;Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | Model |
event | "paginate" |
handler | HooksHandler<ModelPaginatorContract<InstanceType<Model>>, "paginate"> |
Returns
void
Call Signature
after<Model, Event>(
this: Model,
event: Event,
handler: HooksHandler<InstanceType<Model>, Event>): void;Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Event extends EventsList |
Parameters
| Parameter | Type |
|---|---|
this | Model |
event | Event |
handler | HooksHandler<InstanceType<Model>, Event> |
Returns
void
all()
all<T>(this: T, options?: ModelAdapterOptions): Promise<InstanceType<T>[]>;Fetch all rows
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>[]>
before()
Call Signature
before<Model, Event>(
this: Model,
event: Event,
handler: HooksHandler<ModelQueryBuilderContract<Model, InstanceType<Model>>, Event>): void;Register a before hook
Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Event extends "find" | "fetch" |
Parameters
| Parameter | Type |
|---|---|
this | Model |
event | Event |
handler | HooksHandler<ModelQueryBuilderContract<Model, InstanceType<Model>>, Event> |
Returns
void
Call Signature
before<Model>(
this: Model,
event: "paginate",
handler: HooksHandler<[ModelQueryBuilderContract<Model, InstanceType<Model>>, ModelQueryBuilderContract<Model, InstanceType<Model>>], "paginate">): void;Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | Model |
event | "paginate" |
handler | HooksHandler<[ModelQueryBuilderContract<Model, InstanceType<Model>>, ModelQueryBuilderContract<Model, InstanceType<Model>>], "paginate"> |
Returns
void
Call Signature
before<Model, Event>(
this: Model,
event: Event,
handler: HooksHandler<InstanceType<Model>, Event>): void;Type Parameters
| Type Parameter |
|---|
Model extends LucidModel |
Event extends EventsList |
Parameters
| Parameter | Type |
|---|---|
this | Model |
event | Event |
handler | HooksHandler<InstanceType<Model>, Event> |
Returns
void
boot()
boot(): void;Boot model
Returns
void
create()
create<T>(
this: T,
values: Partial<ModelAttributes<InstanceType<T>>>,
options?: ModelAssignOptions): Promise<InstanceType<T>>;Create model and return its instance back
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
values | Partial<ModelAttributes<InstanceType<T>>> |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>>
createMany()
createMany<T>(
this: T,
values: Partial<ModelAttributes<InstanceType<T>>>[],
options?: ModelAssignOptions): Promise<InstanceType<T>[]>;Create many of model instances
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
values | Partial<ModelAttributes<InstanceType<T>>>[] |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>[]>
createManyQuietly()
createManyQuietly<T>(
this: T,
values: Partial<ModelAttributes<InstanceType<T>>>[],
options?: ModelAssignOptions): Promise<InstanceType<T>[]>;Same as [[BaseModel.createMany]] but without invoking hooks
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
values | Partial<ModelAttributes<InstanceType<T>>>[] |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>[]>
createQuietly()
createQuietly<T>(
this: T,
values: Partial<ModelAttributes<InstanceType<T>>>,
options?: ModelAssignOptions): Promise<InstanceType<T>>;Same as [[BaseModel.create]] but without invoking hooks
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
values | Partial<ModelAttributes<InstanceType<T>>> |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>>
fetchOrCreateMany()
fetchOrCreateMany<T>(
this: T,
predicate:
| keyof ModelAttributes<InstanceType<T>>
| keyof ModelAttributes<InstanceType<T>>[],
payload: Partial<ModelAttributes<InstanceType<T>>>[],
options?: ModelAssignOptions): Promise<InstanceType<T>[]>;Find rows or create many when missing. One db call is invoked for each create
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
predicate | | keyof ModelAttributes<InstanceType<T>> | keyof ModelAttributes<InstanceType<T>>[] |
payload | Partial<ModelAttributes<InstanceType<T>>>[] |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>[]>
fetchOrNewUpMany()
fetchOrNewUpMany<T>(
this: T,
predicate:
| keyof ModelAttributes<InstanceType<T>>
| keyof ModelAttributes<InstanceType<T>>[],
payload: Partial<ModelAttributes<InstanceType<T>>>[],
options?: ModelAssignOptions): Promise<InstanceType<T>[]>;Find rows or create in-memory instances of the missing one's.
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
predicate | | keyof ModelAttributes<InstanceType<T>> | keyof ModelAttributes<InstanceType<T>>[] |
payload | Partial<ModelAttributes<InstanceType<T>>>[] |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>[]>
find()
find<T>(
this: T,
value: any,
options?: ModelAdapterOptions): Promise<
| InstanceType<T>
| null>;Find one using the primary key
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
value | any |
options? | ModelAdapterOptions |
Returns
Promise< | InstanceType<T> | null>
findBy()
Call Signature
findBy<T>(
this: T,
clause: Record<string, unknown>,
options?: ModelAdapterOptions): Promise<
| InstanceType<T>
| null>;Find one using a clause
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
clause | Record<string, unknown> |
options? | ModelAdapterOptions |
Returns
Promise< | InstanceType<T> | null>
Call Signature
findBy<T>(
this: T,
key: string,
value: any,
options?: ModelAdapterOptions): Promise<
| InstanceType<T>
| null>;Find one using a key-value pair
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
key | string |
value | any |
options? | ModelAdapterOptions |
Returns
Promise< | InstanceType<T> | null>
findByOrFail()
Call Signature
findByOrFail<T>(
this: T,
clause: Record<string, unknown>,
options?: ModelAdapterOptions): Promise<InstanceType<T>>;Find one using a clause or fail
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
clause | Record<string, unknown> |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>>
Call Signature
findByOrFail<T>(
this: T,
key: string,
value: any,
options?: ModelAdapterOptions): Promise<InstanceType<T>>;Find one using a key-value pair or fail
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
key | string |
value | any |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>>
findMany()
findMany<T>(
this: T,
value: any[],
options?: ModelAdapterOptions): Promise<InstanceType<T>[]>;Find many using an array of primary keys
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
value | any[] |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>[]>
findManyBy()
Call Signature
findManyBy<T>(
this: T,
clause: Record<string, unknown>,
options?: ModelAdapterOptions): Promise<InstanceType<T>[]>;Find multiple models instance using a clause
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
clause | Record<string, unknown> |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>[]>
Call Signature
findManyBy<T>(
this: T,
key: string,
value: any,
options?: ModelAdapterOptions): Promise<InstanceType<T>[]>;Find multiple models instance using a key/value pair
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
key | string |
value | any |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>[]>
findOrFail()
findOrFail<T>(
this: T,
value: any,
options?: ModelAdapterOptions): Promise<InstanceType<T>>;Find one using the primary key or fail
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
value | any |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>>
first()
first<T>(this: T, options?: ModelAdapterOptions): Promise<
| InstanceType<T>
| null>;Same as query().first()
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
options? | ModelAdapterOptions |
Returns
Promise< | InstanceType<T> | null>
firstOrCreate()
firstOrCreate<T>(
this: T,
searchPayload: Partial<ModelAttributes<InstanceType<T>>>,
savePayload?: Partial<ModelAttributes<InstanceType<T>>>,
options?: ModelAssignOptions): Promise<InstanceType<T>>;Returns the first row or save it to the database
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
searchPayload | Partial<ModelAttributes<InstanceType<T>>> |
savePayload? | Partial<ModelAttributes<InstanceType<T>>> |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>>
firstOrFail()
firstOrFail<T>(this: T, options?: ModelAdapterOptions): Promise<InstanceType<T>>;Same as query().firstOrFail()
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
options? | ModelAdapterOptions |
Returns
Promise<InstanceType<T>>
firstOrNew()
firstOrNew<T>(
this: T,
searchPayload: Partial<ModelAttributes<InstanceType<T>>>,
savePayload?: Partial<ModelAttributes<InstanceType<T>>>,
options?: ModelAssignOptions): Promise<InstanceType<T>>;Returns the first row or create a new instance of model without persisting it
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
searchPayload | Partial<ModelAttributes<InstanceType<T>>> |
savePayload? | Partial<ModelAttributes<InstanceType<T>>> |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>>
query()
query<Model, Result>(this: Model, options?: ModelAdapterOptions): ModelQueryBuilderContract<Model, Result>;Returns the query for fetching a model instance
Type Parameters
| Type Parameter | Default type |
|---|---|
Model extends LucidModel | - |
Result | InstanceType<Model> |
Parameters
| Parameter | Type |
|---|---|
this | Model |
options? | ModelAdapterOptions |
Returns
ModelQueryBuilderContract<Model, Result>
truncate()
truncate(cascade?: boolean): Promise<void>;Truncate model table
Parameters
| Parameter | Type |
|---|---|
cascade? | boolean |
Returns
Promise<void>
updateOrCreate()
updateOrCreate<T>(
this: T,
searchPayload: Partial<ModelAttributes<InstanceType<T>>>,
updatePayload: Partial<ModelAttributes<InstanceType<T>>>,
options?: ModelAssignOptions): Promise<InstanceType<T>>;Returns the first row or save it to the database
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
searchPayload | Partial<ModelAttributes<InstanceType<T>>> |
updatePayload | Partial<ModelAttributes<InstanceType<T>>> |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>>
updateOrCreateMany()
updateOrCreateMany<T>(
this: T,
predicate:
| keyof ModelAttributes<InstanceType<T>>
| keyof ModelAttributes<InstanceType<T>>[],
payload: Partial<ModelAttributes<InstanceType<T>>>[],
options?: ModelAssignOptions): Promise<InstanceType<T>[]>;Update existing rows or create new one's.
Type Parameters
| Type Parameter |
|---|
T extends LucidModel |
Parameters
| Parameter | Type |
|---|---|
this | T |
predicate | | keyof ModelAttributes<InstanceType<T>> | keyof ModelAttributes<InstanceType<T>>[] |
payload | Partial<ModelAttributes<InstanceType<T>>>[] |
options? | ModelAssignOptions |
Returns
Promise<InstanceType<T>[]>
useAdapter()
useAdapter(adapter: AdapterContract): void;Define an adapter to use for interacting with the database
Parameters
| Parameter | Type |
|---|---|
adapter | AdapterContract |
Returns
void