> For the complete documentation index, see [llms.txt](https://pckg.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pckg.gitbook.io/documentation/core-packages/index-4/entity.md).

# Entity

`Entity` presents a table in your database.

## Example

```php

namespace Vendor\Domain\Entity;

use Pckg\Database\Entity;
use Vendor\Domain\Record\User;

class Users extends Entity
{
    protected $record = User::class;
}
```

## Usage

### Relations

All relations should be defined as an `Entity` method. See [> Relations](/documentation/core-packages/index-4/entity/relations.md) for more examples.

### Scopes

You can extract and reuse common scopes to methods.

```php
// ...
    public function scopeForGuest()
    {
        return $this->where('active')
            ->where('published_at', date('Y-m-d H:i:s'), '<=');
    }
// ...
```

You can then call scopes in your controllers, services or everywhere else.

```php
$filteredUsers = (new Users())
    ->forGuest()
    ->all();
```

### Extensions

You can extend the `Entity`

### Factory

Instead of creating the entity with `new`, you can also create an entity from the factory.

```php
use Pckg\Database\Entity\Factory as EntityFactory;
use Vendor\Domain\Entity\Users;

$usersEntity = EntityFactory::create(Users::class);
$usersCollection = $usersEntity->all();
$usersRecord = $usersCollection->first();
```
