Skip to main content

The Model Attributes

The Model Attributes are used to define the table structure in the database.

The attributes are:

  • TableAttribute: Used in the class level. Define that the Model is referencing a table in the database.
  • FieldAttribute: Define the properties in the class that are fields in the database.

Example

#[TableAttribute(tableName: 'mytable')]
class MyModel
{
#[FieldAttribute(primaryKey: true)]
public ?int $id;

#[FieldAttribute()]
public ?string $name;

#[FieldAttribute(fieldName: 'company_id')
public ?int $companyId;

#[FieldAttribute(fieldName: 'created_at')]
protected ?string $createdAt;

#[FieldAttribute(fieldName: 'updated_at')]
protected ?string $updatedAt;

public function getCreatedAt(): ?string
{
return $this->createdAt;
}

public function setCreatedAt(?string $createdAt): void
{
$this->createdAt = $createdAt;
}

public function getUpdatedAt(): ?string
{
return $this->updatedAt;
}

public function setUpdatedAt(?string $updatedAt): void
{
$this->updatedAt = $updatedAt;
}
}

In this example, we have a class MyModel with five properties: id, name, companyId, createdAt, and updatedAt.

The id property is marked as a primary key. The name property is a simple field. The companyId property is a field with a different name in the database company_id. The same for createdAt and updatedAt. These properties are fields with a different name in the database created_at and updated_at.

The TableAttribute is used to define the table name in the database.

Where to use FieldAttribute

The FieldAttribute can be used in the following properties:

  • Public properties
  • Protected properties
  • Private properties

Do not use the FieldAttribute in any method, getter or setter.

Rules for the properties

  • If the property has a type, then must be nullable. If the property is not nullable, you must set a default value.
  • You can use mixed or not typed properties.
  • If the property is protected or private, you must have a getter and setter for this property.

Table Attributes parameters

The TableAttribute has the following parameters:

FieldDescriptionRequired
tableNameThe name of the table in the database.Yes
primaryKeySeedFunctionA function that returns the seed for the primary key. The function must return a value.No

Field Attributes parameters

The FieldAttribute has the following parameters:

FieldDescriptionRequired
primaryKeyIf the field is a primary key. It is required at least one field to be a PK. It is used for insert/updates/deletes.No
fieldNameThe name of the field in the database. If not set, the field name is the same as the property name.No
fieldAliasThe alias of the field in the database. If not set, the field alias is the same as the field name.No
syncWithDbIf the field should be synchronized with the database. Default is true.No
updateFunctionA function that is called when the field is updated. The function must return a value.No
selectFunctionA function that is called when the field is selected. The function must return a value.No
insertFunctionA function that is called when the field is inserted. The function must return a value.No
parentTableThe parent table of the field. This is used in the case of a foreign key. See Auto Discovering Relationship.No

See also Controlling the Data for more information about the updateFunction, selectFunction, and insertFunction.