Simple recurring questions.
- PHP 8.3 or higher
- composer
composer require drago-ex/database
#[Table('table_name', 'primary_key')]
class Model
{
use Database;
}
Reading records from a table:
$this->model->read('*');
Find records by column name:
$this->model->find('column, 'value');
Get a record by ID:
$this->model->get(1);
Delete a record by column name:
$this->model->delete('column, 'value');
Save records as an array (update if id
is provided):
$this->model->save(['column' => 'value']);
class SampleEntity extends Drago\Database\Entity
{
public const Table = 'name';
public const PrimaryKey = 'id';
public ?int $id = null;
public string $sample;
}
Use the entity in a model:
#[From(SampleEntity::Table, SampleEntity::PrimarKey)]
class Model
{
use Database;
}
Fetch records as objects:
$row = $this->model->find('id', 1)->record();
// Accessing properties
echo $row->id;
echo $row->sample;
To save entity data (update record if id
is present):
$entity = new SampleEntity;
$entity->id = 1;
$entity->sample = 'sample';
$this->save($entity);
You can use a custom entity class with database mapping:
/** @extends Database<SampleEntity> */
#[From(SampleEntity::Table, SampleEntity::PrimaryKey, class: SampleEntity::class)]
class Model
{
use Database;
}
// Fetch records directly as objects
$row = $this->model->find('id', 1)->record();
// Access the object's properties
echo $row->id;
echo $row->sample;
// Fetch all records
$allRecords = $this->model->read('*')->recordAll();
For automatic entity generation, consider using the Drago Generator tool: https://github.com/drago-ex/generator