---
title: "Phalcon Mvc"
version: "5.19"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.phalcon.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Phalcon Mvc

:::info[NOTE]
All classes are prefixed with `Phalcon`
:::

## Mvc\Application

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Application.zep">Source on GitHub</a>

Phalcon\Mvc\Application

This component encapsulates all the complex operations behind instantiating
every component needed and integrating it with the rest to allow the MVC
pattern to operate as desired.

```php
use Phalcon\Mvc\Application;

class MyApp extends Application
{
/**
 * Register the services here to make them general or register
 * in the ModuleDefinition to make them module-specific
 *\/
protected function registerServices()
{

}

/**
 * This method registers all the modules in the application
 *\/
public function main()
{
    $this->registerModules(
        [
            "frontend" => [
                "className" => "Multiple\\Frontend\\Module",
                "path"      => "../apps/frontend/Module.php",
            ],
            "backend" => [
                "className" => "Multiple\\Backend\\Module",
                "path"      => "../apps/backend/Module.php",
            ],
        ]
    );
}
}

$application = new MyApp();

$application->main();
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- [`Phalcon\Application\AbstractApplication`](/5.19/api/phalcon_application/#applicationabstractapplication)
- **`Phalcon\Mvc\Application`**

</div>

__Uses__ `Closure` · `Phalcon\Application\AbstractApplication` · `Phalcon\Di\DiInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Http\ResponseInterface` · `Phalcon\Mvc\Application\Exception` · `Phalcon\Mvc\Application\Exceptions\ContainerRequired` · `Phalcon\Mvc\Application\Exceptions\InvalidModuleDefinition` · `Phalcon\Mvc\Application\Exceptions\ModuleDefinitionPathNotFound` · `Phalcon\Mvc\ModuleDefinitionInterface` · `Phalcon\Mvc\Router\RouteInterface` · `Phalcon\Traits\Php\FileTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcapplication-handle">
<code class="vis vis-public">public</code>
<code class="ret">ResponseInterface|bool</code>
<code class="sig"><span class="sf">handle</span>( <span class="st">string</span> <span class="sv">$uri</span> )</code>
<span class="desc">Handles a MVC request</span>
</a>
<a class="api-item" href="#mvcapplication-sendcookiesonhandlerequest">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">sendCookiesOnHandleRequest</span>( <span class="st">bool</span> <span class="sv">$sendCookies</span> )</code>
<span class="desc">Enables or disables sending cookies by each request handling</span>
</a>
<a class="api-item" href="#mvcapplication-sendheadersonhandlerequest">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">sendHeadersOnHandleRequest</span>( <span class="st">bool</span> <span class="sv">$sendHeaders</span> )</code>
<span class="desc">Enables or disables sending headers by each request handling</span>
</a>
<a class="api-item" href="#mvcapplication-useimplicitview">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">useImplicitView</span>( <span class="st">bool</span> <span class="sv">$implicitView</span> )</code>
<span class="desc">By default. The view is implicitly buffering all the output</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$implicitView</span><span class="sm"> = true</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$sendCookies</span><span class="sm"> = true</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$sendHeaders</span><span class="sm"> = true</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="mvcapplication-handle"><code>handle()</code></h4>

```php
public function handle( string $uri ): ResponseInterface|bool;
```

Handles a MVC request

<h4 id="mvcapplication-sendcookiesonhandlerequest"><code>sendCookiesOnHandleRequest()</code></h4>

```php
public function sendCookiesOnHandleRequest( bool $sendCookies ): static;
```

Enables or disables sending cookies by each request handling

<h4 id="mvcapplication-sendheadersonhandlerequest"><code>sendHeadersOnHandleRequest()</code></h4>

```php
public function sendHeadersOnHandleRequest( bool $sendHeaders ): static;
```

Enables or disables sending headers by each request handling

<h4 id="mvcapplication-useimplicitview"><code>useImplicitView()</code></h4>

```php
public function useImplicitView( bool $implicitView ): static;
```

By default. The view is implicitly buffering all the output
You can full disable the view component using this method

## Mvc\Application\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Application/Exception.zep">Source on GitHub</a>

Phalcon\Mvc\Application\Exception

Exceptions thrown in Phalcon\Mvc\Application class will use this class

<div class="api-tree">

- `\Exception`
- [`Phalcon\Application\Exception`](/5.19/api/phalcon_application/#applicationexception)
- **`Phalcon\Mvc\Application\Exception`**
- [`Phalcon\Mvc\Application\Exceptions\ContainerRequired`](#mvcapplicationexceptionscontainerrequired)
- [`Phalcon\Mvc\Application\Exceptions\InvalidModuleDefinition`](#mvcapplicationexceptionsinvalidmoduledefinition)
- [`Phalcon\Mvc\Application\Exceptions\ModuleDefinitionPathNotFound`](#mvcapplicationexceptionsmoduledefinitionpathnotfound)

</div>

## Mvc\Application\Exceptions\ContainerRequired

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Application/Exceptions/ContainerRequired.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Application\Exception`](/5.19/api/phalcon_application/#applicationexception)
- [`Phalcon\Mvc\Application\Exception`](#mvcapplicationexception)
- **`Phalcon\Mvc\Application\Exceptions\ContainerRequired`**

</div>

__Uses__ `Phalcon\Mvc\Application\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcapplicationexceptionscontainerrequired-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcapplicationexceptionscontainerrequired-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Application\Exceptions\InvalidModuleDefinition

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Application/Exceptions/InvalidModuleDefinition.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Application\Exception`](/5.19/api/phalcon_application/#applicationexception)
- [`Phalcon\Mvc\Application\Exception`](#mvcapplicationexception)
- **`Phalcon\Mvc\Application\Exceptions\InvalidModuleDefinition`**

</div>

__Uses__ `Phalcon\Mvc\Application\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcapplicationexceptionsinvalidmoduledefinition-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$reason</span><span class="sm"> = null</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcapplicationexceptionsinvalidmoduledefinition-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string|null $name = null,
string|null $reason = null
);
```

## Mvc\Application\Exceptions\ModuleDefinitionPathNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Application/Exceptions/ModuleDefinitionPathNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Application\Exception`](/5.19/api/phalcon_application/#applicationexception)
- [`Phalcon\Mvc\Application\Exception`](#mvcapplicationexception)
- **`Phalcon\Mvc\Application\Exceptions\ModuleDefinitionPathNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Application\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcapplicationexceptionsmoduledefinitionpathnotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcapplicationexceptionsmoduledefinitionpathnotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Mvc\Controller

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Controller.zep">Source on GitHub</a>

Phalcon\Mvc\Controller

Every application controller should extend this class that encapsulates all
the controller functionality

The controllers provide the “flow” between models and views. Controllers are
responsible for processing the incoming requests from the web browser,
interrogating the models for data, and passing that data on to the views for
presentation.

```php
<?php

class PeopleController extends \Phalcon\Mvc\Controller
{
// This action will be executed by default
public function indexAction()
{

}

public function findAction()
{

}

public function saveAction()
{
    // Forwards flow to the index action
    return $this->dispatcher->forward(
        [
            "controller" => "people",
            "action"     => "index",
        ]
    );
}
}
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- **`Phalcon\Mvc\Controller`** - implements [`Phalcon\Mvc\ControllerInterface`](#mvccontrollerinterface), [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface)

</div>

__Uses__ `Phalcon\Di\Injectable` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvccontroller-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
<span class="desc">Phalcon\Mvc\Controller constructor</span>
</a>
<a class="api-item" href="#mvccontroller-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvccontroller-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets the events manager</span>
</a>
<a class="api-item" href="#mvccontroller-firemanagerevent">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed|bool</code>
<code class="sig"><span class="sf">fireManagerEvent</span>(<span class="prm"><span class="st">string</span> <span class="sv">$eventName</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$data</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$cancellable</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Helper method to fire an event</span>
</a>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="mvccontroller-__construct"><code>__construct()</code></h4>

```php
final public function __construct();
```

Phalcon\Mvc\Controller constructor

<h4 id="mvccontroller-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): ManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvccontroller-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( ManagerInterface $eventsManager ): void;
```

Sets the events manager

<div class="api-group">Protected · 1</div>

<h4 id="mvccontroller-firemanagerevent"><code>fireManagerEvent()</code></h4>

```php
protected function fireManagerEvent(
string $eventName,
mixed $data = null,
bool $cancellable = true
): mixed|bool;
```

Helper method to fire an event

## Mvc\ControllerInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/ControllerInterface.zep">Source on GitHub</a>

Phalcon\Mvc\ControllerInterface

Interface for controller handlers

<div class="api-tree">

- **`Phalcon\Mvc\ControllerInterface`**

</div>

## Mvc\Controller\BindModelInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Controller/BindModelInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Controller\BindModelInterface

Interface for Phalcon\Mvc\Controller

<div class="api-tree">

- **`Phalcon\Mvc\Controller\BindModelInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvccontrollerbindmodelinterface-getmodelname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModelName</span>()</code>
<span class="desc">Return the model name associated with this controller</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvccontrollerbindmodelinterface-getmodelname"><code>getModelName()</code></h4>

```php
public static function getModelName(): string;
```

Return the model name associated with this controller

## Mvc\Dispatcher

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Dispatcher.zep">Source on GitHub</a>

Dispatching is the process of taking the request object, extracting the
module name, controller name, action name, and optional parameters contained
in it, and then instantiating a controller and calling an action of that
controller.

```php
$di = new \Phalcon\Di\Di();

$dispatcher = new \Phalcon\Mvc\Dispatcher();

$dispatcher->setDI($di);

$dispatcher->setControllerName("posts");
$dispatcher->setActionName("index");
$dispatcher->setParams([]);

$controller = $dispatcher->dispatch();
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\AbstractInjectionAware`](/5.19/api/phalcon_di/#diabstractinjectionaware)
- [`Phalcon\Dispatcher\AbstractDispatcher`](/5.19/api/phalcon_dispatcher/#dispatcherabstractdispatcher)
- **`Phalcon\Mvc\Dispatcher`** - implements [`Phalcon\Mvc\DispatcherInterface`](#mvcdispatcherinterface)

</div>

__Uses__ `Phalcon\Contracts\Dispatcher\DispatcherTypes` · `Phalcon\Dispatcher\AbstractDispatcher` · `Phalcon\Events\ManagerInterface` · `Phalcon\Http\ResponseInterface` · `Phalcon\Mvc\Dispatcher\Exception` · `Phalcon\Mvc\Dispatcher\Exceptions\ResponseServiceUnavailable`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcdispatcher-forward">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">forward</span>( <span class="st">array</span> <span class="sv">$forward</span> )</code>
<span class="desc">Forwards the execution flow to another controller/action.</span>
</a>
<a class="api-item" href="#mvcdispatcher-getactivecontroller">
<code class="vis vis-public">public</code>
<code class="ret">ControllerInterface</code>
<code class="sig"><span class="sf">getActiveController</span>()</code>
<span class="desc">Returns the active controller in the dispatcher</span>
</a>
<a class="api-item" href="#mvcdispatcher-getcontrollerclass">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getControllerClass</span>()</code>
<span class="desc">Possible controller class name that will be located to dispatch the</span>
</a>
<a class="api-item" href="#mvcdispatcher-getcontrollername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getControllerName</span>()</code>
<span class="desc">Gets last dispatched controller name</span>
</a>
<a class="api-item" href="#mvcdispatcher-getlastcontroller">
<code class="vis vis-public">public</code>
<code class="ret">ControllerInterface</code>
<code class="sig"><span class="sf">getLastController</span>()</code>
<span class="desc">Returns the latest dispatched controller</span>
</a>
<a class="api-item" href="#mvcdispatcher-getpreviouscontrollername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPreviousControllerName</span>()</code>
<span class="desc">Gets previous dispatched controller name</span>
</a>
<a class="api-item" href="#mvcdispatcher-setcontrollername">
<code class="vis vis-public">public</code>
<code class="ret">DispatcherInterface</code>
<code class="sig"><span class="sf">setControllerName</span>( <span class="st">string</span> <span class="sv">$controllerName</span> )</code>
<span class="desc">Sets the controller name to be dispatched</span>
</a>
<a class="api-item" href="#mvcdispatcher-setcontrollersuffix">
<code class="vis vis-public">public</code>
<code class="ret">DispatcherInterface</code>
<code class="sig"><span class="sf">setControllerSuffix</span>( <span class="st">string</span> <span class="sv">$controllerSuffix</span> )</code>
<span class="desc">Sets the default controller suffix</span>
</a>
<a class="api-item" href="#mvcdispatcher-setdefaultcontroller">
<code class="vis vis-public">public</code>
<code class="ret">DispatcherInterface</code>
<code class="sig"><span class="sf">setDefaultController</span>( <span class="st">string</span> <span class="sv">$controllerName</span> )</code>
<span class="desc">Sets the default controller name</span>
</a>
<a class="api-item" href="#mvcdispatcher-handleexception">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">handleException</span>( <span class="st">\Exception</span> <span class="sv">$exception</span> )</code>
<span class="desc">Handles a user exception</span>
</a>
<a class="api-item" href="#mvcdispatcher-throwdispatchexception">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">throwDispatchException</span>(<span class="prm"><span class="st">string</span> <span class="sv">$message</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$exceptionCode</span><span class="sm"> = 0</span></span>)</code>
<span class="desc">Throws an internal exception</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$defaultAction</span><span class="sm"> = &quot;index&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$defaultHandler</span><span class="sm"> = &quot;index&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$handlerSuffix</span><span class="sm"> = &quot;Controller&quot;</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 9</div>

<h4 id="mvcdispatcher-forward"><code>forward()</code></h4>

```php
public function forward( array $forward ): void;
```

Forwards the execution flow to another controller/action.

```php
use Phalcon\Events\Event;
use Phalcon\Mvc\Dispatcher;
use App\Backend\Bootstrap as Backend;
use App\Frontend\Bootstrap as Frontend;

// Registering modules
$modules = [
"frontend" => [
    "className" => Frontend::class,
    "path"      => __DIR__ . "/app/Modules/Frontend/Bootstrap.php",
    "metadata"  => [
        "controllersNamespace" => "App\Frontend\Controllers",
    ],
],
"backend" => [
    "className" => Backend::class,
    "path"      => __DIR__ . "/app/Modules/Backend/Bootstrap.php",
    "metadata"  => [
        "controllersNamespace" => "App\Backend\Controllers",
    ],
],
];

$application->registerModules($modules);

// Setting beforeForward listener
$eventsManager  = $di->getShared("eventsManager");

$eventsManager->attach(
"dispatch:beforeForward",
function(Event $event, Dispatcher $dispatcher, array $forward) use ($modules) {
    $metadata = $modules[$forward["module"]]["metadata"];

    $dispatcher->setModuleName(
        $forward["module"]
    );

    $dispatcher->setNamespaceName(
        $metadata["controllersNamespace"]
    );
}
);

// Forward
$this->dispatcher->forward(
[
    "module"     => "backend",
    "controller" => "posts",
    "action"     => "index",
]
);
```

<h4 id="mvcdispatcher-getactivecontroller"><code>getActiveController()</code></h4>

```php
public function getActiveController(): ControllerInterface;
```

Returns the active controller in the dispatcher

<h4 id="mvcdispatcher-getcontrollerclass"><code>getControllerClass()</code></h4>

```php
public function getControllerClass(): string;
```

Possible controller class name that will be located to dispatch the
request

<h4 id="mvcdispatcher-getcontrollername"><code>getControllerName()</code></h4>

```php
public function getControllerName(): string;
```

Gets last dispatched controller name

<h4 id="mvcdispatcher-getlastcontroller"><code>getLastController()</code></h4>

```php
public function getLastController(): ControllerInterface;
```

Returns the latest dispatched controller

<h4 id="mvcdispatcher-getpreviouscontrollername"><code>getPreviousControllerName()</code></h4>

```php
public function getPreviousControllerName(): string;
```

Gets previous dispatched controller name

Note: This is an Mvc-specific alias for the base
getPreviousHandlerName().

<h4 id="mvcdispatcher-setcontrollername"><code>setControllerName()</code></h4>

```php
public function setControllerName( string $controllerName ): DispatcherInterface;
```

Sets the controller name to be dispatched

<h4 id="mvcdispatcher-setcontrollersuffix"><code>setControllerSuffix()</code></h4>

```php
public function setControllerSuffix( string $controllerSuffix ): DispatcherInterface;
```

Sets the default controller suffix

<h4 id="mvcdispatcher-setdefaultcontroller"><code>setDefaultController()</code></h4>

```php
public function setDefaultController( string $controllerName ): DispatcherInterface;
```

Sets the default controller name

<div class="api-group">Protected · 2</div>

<h4 id="mvcdispatcher-handleexception"><code>handleException()</code></h4>

```php
protected function handleException( \Exception $exception );
```

Handles a user exception

<h4 id="mvcdispatcher-throwdispatchexception"><code>throwDispatchException()</code></h4>

```php
protected function throwDispatchException(
string $message,
int $exceptionCode = 0
);
```

Throws an internal exception

## Mvc\DispatcherInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/DispatcherInterface.zep">Source on GitHub</a>

Phalcon\Mvc\DispatcherInterface

Interface for Phalcon\Mvc\Dispatcher

<div class="api-tree">

- [`Phalcon\Contracts\Dispatcher\Dispatcher`](/5.19/api/phalcon_contracts/#contractsdispatcherdispatcher)
- [`Phalcon\Contracts\Mvc\Dispatcher`](/5.19/api/phalcon_contracts/#contractsmvcdispatcher)
- **`Phalcon\Mvc\DispatcherInterface`**

</div>

__Uses__ `Phalcon\Contracts\Mvc\Dispatcher`

## Mvc\Dispatcher\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Dispatcher/Exception.zep">Source on GitHub</a>

Phalcon\Mvc\Dispatcher\Exception

Exceptions thrown in Phalcon\Mvc\Dispatcher will use this class

<div class="api-tree">

- `\Exception`
- [`Phalcon\Dispatcher\Exception`](/5.19/api/phalcon_dispatcher/#dispatcherexception)
- **`Phalcon\Mvc\Dispatcher\Exception`**
- [`Phalcon\Mvc\Dispatcher\Exceptions\ResponseServiceUnavailable`](#mvcdispatcherexceptionsresponseserviceunavailable)

</div>

## Mvc\Dispatcher\Exceptions\ResponseServiceUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Dispatcher/Exceptions/ResponseServiceUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Dispatcher\Exception`](/5.19/api/phalcon_dispatcher/#dispatcherexception)
- [`Phalcon\Mvc\Dispatcher\Exception`](#mvcdispatcherexception)
- **`Phalcon\Mvc\Dispatcher\Exceptions\ResponseServiceUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\Dispatcher\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcdispatcherexceptionsresponseserviceunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcdispatcherexceptionsresponseserviceunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\EntityInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/EntityInterface.zep">Source on GitHub</a>

Phalcon\Mvc\EntityInterface

Interface for Phalcon\Mvc\Collection and Phalcon\Mvc\Model

<div class="api-tree">

- **`Phalcon\Mvc\EntityInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcentityinterface-readattribute">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">readAttribute</span>( <span class="st">string</span> <span class="sv">$attribute</span> )</code>
<span class="desc">Reads an attribute value by its name</span>
</a>
<a class="api-item" href="#mvcentityinterface-writeattribute">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">writeAttribute</span>(<span class="prm"><span class="st">string</span> <span class="sv">$attribute</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Writes an attribute value by its name</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcentityinterface-readattribute"><code>readAttribute()</code></h4>

```php
public function readAttribute( string $attribute ): mixed|null;
```

Reads an attribute value by its name

<h4 id="mvcentityinterface-writeattribute"><code>writeAttribute()</code></h4>

```php
public function writeAttribute(
string $attribute,
mixed $value
);
```

Writes an attribute value by its name

## Mvc\Micro

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro.zep">Source on GitHub</a>

Phalcon\Mvc\Micro

With Phalcon you can create "Micro-Framework like" applications. By doing
this, you only need to write a minimal amount of code to create a PHP
application. Micro applications are suitable to small applications, APIs and
prototypes in a practical way.

```php
$app = new \Phalcon\Mvc\Micro();

$app->get(
"/say/welcome/{name}",
function ($name) {
    echo "<h1>Welcome $name!</h1>";
}
);

$app->handle("/say/welcome/Phalcon");
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- **`Phalcon\Mvc\Micro`** - implements `\ArrayAccess`, [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface)

</div>

__Uses__ `ArrayAccess` · `Closure` · `Phalcon\Cache\Adapter\AdapterInterface` · `Phalcon\Di\DiInterface` · `Phalcon\Di\FactoryDefault` · `Phalcon\Di\Injectable` · `Phalcon\Di\ServiceInterface` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Http\ResponseInterface` · `Phalcon\Mvc\Micro\Collection` · `Phalcon\Mvc\Micro\CollectionInterface` · `Phalcon\Mvc\Micro\Exception` · `Phalcon\Mvc\Micro\Exceptions\ContainerRequired` · `Phalcon\Mvc\Micro\Exceptions\ErrorHandlerNotCallable` · `Phalcon\Mvc\Micro\Exceptions\HandlerNotCallable` · `Phalcon\Mvc\Micro\Exceptions\InvalidRegisteredHandler` · `Phalcon\Mvc\Micro\Exceptions\MissingCollectionMainHandler` · `Phalcon\Mvc\Micro\Exceptions\NoHandlersToMount` · `Phalcon\Mvc\Micro\Exceptions\NoMatchedRouteHandler` · `Phalcon\Mvc\Micro\Exceptions\NotFoundHandlerNotCallable` · `Phalcon\Mvc\Micro\Exceptions\ResponseHandlerNotCallable` · `Phalcon\Mvc\Micro\LazyLoader` · `Phalcon\Mvc\Micro\MiddlewareInterface` · `Phalcon\Mvc\Model\BinderInterface` · `Phalcon\Mvc\Router\RouteInterface` · `Throwable`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicro-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span> )</code>
<span class="desc">Phalcon\Mvc\Micro constructor</span>
</a>
<a class="api-item" href="#mvcmicro-after">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">after</span>( <span class="st">mixed</span> <span class="sv">$handler</span> )</code>
<span class="desc">Appends an &#039;after&#039; middleware to be called after execute the route</span>
</a>
<a class="api-item" href="#mvcmicro-afterbinding">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">afterBinding</span>( <span class="st">mixed</span> <span class="sv">$handler</span> )</code>
<span class="desc">Appends a afterBinding middleware to be called after model binding</span>
</a>
<a class="api-item" href="#mvcmicro-before">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">before</span>( <span class="st">mixed</span> <span class="sv">$handler</span> )</code>
<span class="desc">Appends a before middleware to be called before execute the route</span>
</a>
<a class="api-item" href="#mvcmicro-delete">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">delete</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is DELETE</span>
</a>
<a class="api-item" href="#mvcmicro-error">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">error</span>( <span class="st">mixed</span> <span class="sv">$handler</span> )</code>
<span class="desc">Sets a handler that will be called when an exception is thrown handling</span>
</a>
<a class="api-item" href="#mvcmicro-finish">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">finish</span>( <span class="st">mixed</span> <span class="sv">$handler</span> )</code>
<span class="desc">Appends a &#039;finish&#039; middleware to be called when the request is finished</span>
</a>
<a class="api-item" href="#mvcmicro-get">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">get</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is GET</span>
</a>
<a class="api-item" href="#mvcmicro-getactivehandler">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getActiveHandler</span>()</code>
<span class="desc">Return the handler that will be called for the matched route</span>
</a>
<a class="api-item" href="#mvcmicro-getboundmodels">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBoundModels</span>()</code>
<span class="desc">Returns bound models from binder instance</span>
</a>
<a class="api-item" href="#mvcmicro-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvcmicro-gethandlers">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getHandlers</span>()</code>
<span class="desc">Returns the internal handlers attached to the application</span>
</a>
<a class="api-item" href="#mvcmicro-getmodelbinder">
<code class="vis vis-public">public</code>
<code class="ret">BinderInterface|null</code>
<code class="sig"><span class="sf">getModelBinder</span>()</code>
<span class="desc">Gets model binder</span>
</a>
<a class="api-item" href="#mvcmicro-getreturnedvalue">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getReturnedValue</span>()</code>
<span class="desc">Returns the value returned by the executed handler</span>
</a>
<a class="api-item" href="#mvcmicro-getrouter">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">getRouter</span>()</code>
<span class="desc">Returns the internal router used by the application</span>
</a>
<a class="api-item" href="#mvcmicro-getservice">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getService</span>( <span class="st">string</span> <span class="sv">$serviceName</span> )</code>
<span class="desc">Obtains a service from the DI</span>
</a>
<a class="api-item" href="#mvcmicro-getsharedservice">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getSharedService</span>( <span class="st">string</span> <span class="sv">$serviceName</span> )</code>
<span class="desc">Obtains a shared service from the DI</span>
</a>
<a class="api-item" href="#mvcmicro-handle">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">handle</span>( <span class="st">string</span> <span class="sv">$uri</span> )</code>
<span class="desc">Handle the whole request</span>
</a>
<a class="api-item" href="#mvcmicro-hasservice">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasService</span>( <span class="st">string</span> <span class="sv">$serviceName</span> )</code>
<span class="desc">Checks if a service is registered in the DI</span>
</a>
<a class="api-item" href="#mvcmicro-head">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">head</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is HEAD</span>
</a>
<a class="api-item" href="#mvcmicro-map">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">map</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler without any HTTP method constraint</span>
</a>
<a class="api-item" href="#mvcmicro-mount">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">mount</span>( <span class="st">CollectionInterface</span> <span class="sv">$collection</span> )</code>
<span class="desc">Mounts a collection of handlers</span>
</a>
<a class="api-item" href="#mvcmicro-notfound">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">notFound</span>( <span class="st">mixed</span> <span class="sv">$handler</span> )</code>
<span class="desc">Sets a handler that will be called when the router does not match any of</span>
</a>
<a class="api-item" href="#mvcmicro-offsetexists">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">offsetExists</span>( <span class="st">mixed</span> <span class="sv">$offset</span> )</code>
<span class="desc">Check if a service is registered in the internal services container using</span>
</a>
<a class="api-item" href="#mvcmicro-offsetget">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">offsetGet</span>( <span class="st">mixed</span> <span class="sv">$offset</span> )</code>
<span class="desc">Allows to obtain a shared service in the internal services container</span>
</a>
<a class="api-item" href="#mvcmicro-offsetset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">offsetSet</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$offset</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Allows to register a shared service in the internal services container</span>
</a>
<a class="api-item" href="#mvcmicro-offsetunset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">offsetUnset</span>( <span class="st">mixed</span> <span class="sv">$offset</span> )</code>
<span class="desc">Removes a service from the internal services container using the array</span>
</a>
<a class="api-item" href="#mvcmicro-options">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">options</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is OPTIONS</span>
</a>
<a class="api-item" href="#mvcmicro-patch">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">patch</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is PATCH</span>
</a>
<a class="api-item" href="#mvcmicro-post">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">post</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is POST</span>
</a>
<a class="api-item" href="#mvcmicro-put">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">put</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is PUT</span>
</a>
<a class="api-item" href="#mvcmicro-setactivehandler">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">setActiveHandler</span>( <span class="st">mixed</span> <span class="sv">$activeHandler</span> )</code>
<span class="desc">Sets externally the handler that must be called by the matched route</span>
</a>
<a class="api-item" href="#mvcmicro-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmicro-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets the events manager</span>
</a>
<a class="api-item" href="#mvcmicro-setmodelbinder">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setModelBinder</span>(<span class="prm"><span class="st">BinderInterface</span> <span class="sv">$modelBinder</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$cache</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets model binder</span>
</a>
<a class="api-item" href="#mvcmicro-setresponsehandler">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setResponseHandler</span>( <span class="st">mixed</span> <span class="sv">$handler</span> )</code>
<span class="desc">Appends a custom &#039;response&#039; handler to be called instead of the default</span>
</a>
<a class="api-item" href="#mvcmicro-setservice">
<code class="vis vis-public">public</code>
<code class="ret">ServiceInterface</code>
<code class="sig"><span class="sf">setService</span>(<span class="prm"><span class="st">string</span> <span class="sv">$serviceName</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$definition</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$isShared</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Sets a service from the DI</span>
</a>
<a class="api-item" href="#mvcmicro-stop">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">stop</span>()</code>
<span class="desc">Stops the middleware execution avoiding than other middlewares be</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sv">$activeHandler</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$afterBindingHandlers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$afterHandlers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$beforeHandlers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">DiInterface|null</code>
<code class="sig"><span class="sv">$container</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sv">$errorHandler</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$eventsManager</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$finishHandlers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$handlers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">BinderInterface|null</code>
<code class="sig"><span class="sv">$modelBinder</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sv">$notFoundHandler</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sv">$responseHandler</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sv">$returnedValue</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">RouterInterface|null</code>
<code class="sig"><span class="sv">$router</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$stopped</span><span class="sm"> = false</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 38</div>

<h4 id="mvcmicro-__construct"><code>__construct()</code></h4>

```php
public function __construct( DiInterface|null $container = null );
```

Phalcon\Mvc\Micro constructor

<h4 id="mvcmicro-after"><code>after()</code></h4>

```php
public function after( mixed $handler ): static;
```

Appends an 'after' middleware to be called after execute the route

<h4 id="mvcmicro-afterbinding"><code>afterBinding()</code></h4>

```php
public function afterBinding( mixed $handler ): static;
```

Appends a afterBinding middleware to be called after model binding

<h4 id="mvcmicro-before"><code>before()</code></h4>

```php
public function before( mixed $handler ): static;
```

Appends a before middleware to be called before execute the route

<h4 id="mvcmicro-delete"><code>delete()</code></h4>

```php
public function delete(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler that only matches if the HTTP method is DELETE

<h4 id="mvcmicro-error"><code>error()</code></h4>

```php
public function error( mixed $handler ): static;
```

Sets a handler that will be called when an exception is thrown handling
the route

<h4 id="mvcmicro-finish"><code>finish()</code></h4>

```php
public function finish( mixed $handler ): static;
```

Appends a 'finish' middleware to be called when the request is finished

<h4 id="mvcmicro-get"><code>get()</code></h4>

```php
public function get(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler that only matches if the HTTP method is GET

<h4 id="mvcmicro-getactivehandler"><code>getActiveHandler()</code></h4>

```php
public function getActiveHandler();
```

Return the handler that will be called for the matched route

<h4 id="mvcmicro-getboundmodels"><code>getBoundModels()</code></h4>

```php
public function getBoundModels(): array;
```

Returns bound models from binder instance

<h4 id="mvcmicro-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): ManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvcmicro-gethandlers"><code>getHandlers()</code></h4>

```php
public function getHandlers(): array;
```

Returns the internal handlers attached to the application

<h4 id="mvcmicro-getmodelbinder"><code>getModelBinder()</code></h4>

```php
public function getModelBinder(): BinderInterface|null;
```

Gets model binder

<h4 id="mvcmicro-getreturnedvalue"><code>getReturnedValue()</code></h4>

```php
public function getReturnedValue();
```

Returns the value returned by the executed handler

<h4 id="mvcmicro-getrouter"><code>getRouter()</code></h4>

```php
public function getRouter(): RouterInterface;
```

Returns the internal router used by the application

<h4 id="mvcmicro-getservice"><code>getService()</code></h4>

```php
public function getService( string $serviceName );
```

Obtains a service from the DI

<h4 id="mvcmicro-getsharedservice"><code>getSharedService()</code></h4>

```php
public function getSharedService( string $serviceName );
```

Obtains a shared service from the DI

<h4 id="mvcmicro-handle"><code>handle()</code></h4>

```php
public function handle( string $uri );
```

Handle the whole request

<h4 id="mvcmicro-hasservice"><code>hasService()</code></h4>

```php
public function hasService( string $serviceName ): bool;
```

Checks if a service is registered in the DI

<h4 id="mvcmicro-head"><code>head()</code></h4>

```php
public function head(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler that only matches if the HTTP method is HEAD

<h4 id="mvcmicro-map"><code>map()</code></h4>

```php
public function map(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler without any HTTP method constraint

<h4 id="mvcmicro-mount"><code>mount()</code></h4>

```php
public function mount( CollectionInterface $collection ): static;
```

Mounts a collection of handlers

<h4 id="mvcmicro-notfound"><code>notFound()</code></h4>

```php
public function notFound( mixed $handler ): static;
```

Sets a handler that will be called when the router does not match any of
the defined routes

<h4 id="mvcmicro-offsetexists"><code>offsetExists()</code></h4>

```php
public function offsetExists( mixed $offset ): bool;
```

Check if a service is registered in the internal services container using
the array syntax

<h4 id="mvcmicro-offsetget"><code>offsetGet()</code></h4>

```php
public function offsetGet( mixed $offset ): mixed;
```

Allows to obtain a shared service in the internal services container
using the array syntax

```php
var_dump(
$app["request"]
);
```

<h4 id="mvcmicro-offsetset"><code>offsetSet()</code></h4>

```php
public function offsetSet(
mixed $offset,
mixed $value
): void;
```

Allows to register a shared service in the internal services container
using the array syntax

```php
   $app["request"] = new \Phalcon\Http\Request();
```

<h4 id="mvcmicro-offsetunset"><code>offsetUnset()</code></h4>

```php
public function offsetUnset( mixed $offset ): void;
```

Removes a service from the internal services container using the array
syntax

<h4 id="mvcmicro-options"><code>options()</code></h4>

```php
public function options(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler that only matches if the HTTP method is OPTIONS

<h4 id="mvcmicro-patch"><code>patch()</code></h4>

```php
public function patch(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler that only matches if the HTTP method is PATCH

<h4 id="mvcmicro-post"><code>post()</code></h4>

```php
public function post(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler that only matches if the HTTP method is POST

<h4 id="mvcmicro-put"><code>put()</code></h4>

```php
public function put(
string $routePattern,
mixed $handler
): RouteInterface;
```

Maps a route to a handler that only matches if the HTTP method is PUT

<h4 id="mvcmicro-setactivehandler"><code>setActiveHandler()</code></h4>

```php
public function setActiveHandler( mixed $activeHandler ): self;
```

Sets externally the handler that must be called by the matched route

<h4 id="mvcmicro-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the DependencyInjector container

<h4 id="mvcmicro-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( ManagerInterface $eventsManager ): void;
```

Sets the events manager

<h4 id="mvcmicro-setmodelbinder"><code>setModelBinder()</code></h4>

```php
public function setModelBinder(
BinderInterface $modelBinder,
mixed $cache = null
): static;
```

Sets model binder

```php
$micro = new Micro($di);

$micro->setModelBinder(
new Binder(),
'cache'
);
```

<h4 id="mvcmicro-setresponsehandler"><code>setResponseHandler()</code></h4>

```php
public function setResponseHandler( mixed $handler ): static;
```

Appends a custom 'response' handler to be called instead of the default
response handler

<h4 id="mvcmicro-setservice"><code>setService()</code></h4>

```php
public function setService(
string $serviceName,
mixed $definition,
bool $isShared = false
): ServiceInterface;
```

Sets a service from the DI

<h4 id="mvcmicro-stop"><code>stop()</code></h4>

```php
public function stop(): void;
```

Stops the middleware execution avoiding than other middlewares be
executed

## Mvc\Micro\Collection

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Collection.zep">Source on GitHub</a>

Phalcon\Mvc\Micro\Collection

Groups Micro-Mvc handlers as controllers

```php
$app = new \Phalcon\Mvc\Micro();

$collection = new Collection();

$collection->setHandler(
new PostsController()
);

$collection->get("/posts/edit/{id}", "edit");

$app->mount($collection);
```

<div class="api-tree">

- **`Phalcon\Mvc\Micro\Collection`** - implements [`Phalcon\Mvc\Micro\CollectionInterface`](#mvcmicrocollectioninterface)

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicrocollection-delete">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">delete</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is DELETE.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-get">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">get</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is GET.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-gethandler">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">getHandler</span>()</code>
<span class="desc">Returns the main handler</span>
</a>
<a class="api-item" href="#mvcmicrocollection-gethandlers">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getHandlers</span>()</code>
<span class="desc">Returns the registered handlers</span>
</a>
<a class="api-item" href="#mvcmicrocollection-getprefix">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPrefix</span>()</code>
<span class="desc">Returns the collection prefix if any</span>
</a>
<a class="api-item" href="#mvcmicrocollection-head">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">head</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is HEAD.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-islazy">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isLazy</span>()</code>
<span class="desc">Returns if the main handler must be lazy loaded</span>
</a>
<a class="api-item" href="#mvcmicrocollection-map">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">map</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-mapvia">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">mapVia</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler via methods.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-options">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">options</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is</span>
</a>
<a class="api-item" href="#mvcmicrocollection-patch">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">patch</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is PATCH.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-post">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">post</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is POST.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-put">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">put</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is PUT.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-sethandler">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">setHandler</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$isLazy</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Sets the main handler.</span>
</a>
<a class="api-item" href="#mvcmicrocollection-setlazy">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">setLazy</span>( <span class="st">bool</span> <span class="sv">$isLazy</span> )</code>
<span class="desc">Sets if the main handler must be lazy loaded</span>
</a>
<a class="api-item" href="#mvcmicrocollection-setprefix">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">setPrefix</span>( <span class="st">string</span> <span class="sv">$prefix</span> )</code>
<span class="desc">Sets a prefix for all routes added to the collection</span>
</a>
<a class="api-item" href="#mvcmicrocollection-addmap">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">addMap</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Internal function to add a handler to the group.</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable</code>
<code class="sig"><span class="sv">$handler</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$handlers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$isLazy</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$prefix</span><span class="sm"> = &quot;&quot;</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 16</div>

<h4 id="mvcmicrocollection-delete"><code>delete()</code></h4>

```php
public function delete(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is DELETE.

<h4 id="mvcmicrocollection-get"><code>get()</code></h4>

```php
public function get(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is GET.

<h4 id="mvcmicrocollection-gethandler"><code>getHandler()</code></h4>

```php
public function getHandler(): mixed;
```

Returns the main handler

<h4 id="mvcmicrocollection-gethandlers"><code>getHandlers()</code></h4>

```php
public function getHandlers(): array;
```

Returns the registered handlers

<h4 id="mvcmicrocollection-getprefix"><code>getPrefix()</code></h4>

```php
public function getPrefix(): string;
```

Returns the collection prefix if any

<h4 id="mvcmicrocollection-head"><code>head()</code></h4>

```php
public function head(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is HEAD.

<h4 id="mvcmicrocollection-islazy"><code>isLazy()</code></h4>

```php
public function isLazy(): bool;
```

Returns if the main handler must be lazy loaded

<h4 id="mvcmicrocollection-map"><code>map()</code></h4>

```php
public function map(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler.

<h4 id="mvcmicrocollection-mapvia"><code>mapVia()</code></h4>

```php
public function mapVia(
string $routePattern,
callable $handler,
mixed $method,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler via methods.

```php
$collection->mapVia(
"/test",
"indexAction",
["POST", "GET"],
"test"
);
```

<h4 id="mvcmicrocollection-options"><code>options()</code></h4>

```php
public function options(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is
OPTIONS.

<h4 id="mvcmicrocollection-patch"><code>patch()</code></h4>

```php
public function patch(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is PATCH.

<h4 id="mvcmicrocollection-post"><code>post()</code></h4>

```php
public function post(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is POST.

<h4 id="mvcmicrocollection-put"><code>put()</code></h4>

```php
public function put(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is PUT.

<h4 id="mvcmicrocollection-sethandler"><code>setHandler()</code></h4>

```php
public function setHandler(
mixed $handler,
bool $isLazy = false
): CollectionInterface;
```

Sets the main handler.

<h4 id="mvcmicrocollection-setlazy"><code>setLazy()</code></h4>

```php
public function setLazy( bool $isLazy ): CollectionInterface;
```

Sets if the main handler must be lazy loaded

<h4 id="mvcmicrocollection-setprefix"><code>setPrefix()</code></h4>

```php
public function setPrefix( string $prefix ): CollectionInterface;
```

Sets a prefix for all routes added to the collection

<div class="api-group">Protected · 1</div>

<h4 id="mvcmicrocollection-addmap"><code>addMap()</code></h4>

```php
protected function addMap(
mixed $method,
string $routePattern,
callable $handler,
string|null $name = null
): void;
```

Internal function to add a handler to the group.

## Mvc\Micro\CollectionInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/CollectionInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Micro\CollectionInterface

Interface for Phalcon\Mvc\Micro\Collection

<div class="api-tree">

- **`Phalcon\Mvc\Micro\CollectionInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicrocollectioninterface-delete">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">delete</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is DELETE</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-get">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">get</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is GET</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-gethandler">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">getHandler</span>()</code>
<span class="desc">Returns the main handler</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-gethandlers">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getHandlers</span>()</code>
<span class="desc">Returns the registered handlers</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-getprefix">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPrefix</span>()</code>
<span class="desc">Returns the collection prefix if any</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-head">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">head</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is HEAD</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-islazy">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isLazy</span>()</code>
<span class="desc">Returns if the main handler must be lazy loaded</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-map">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">map</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-options">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">options</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is OPTIONS</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-patch">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">patch</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is PATCH</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-post">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">post</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is POST</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-put">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">put</span>(<span class="prm"><span class="st">string</span> <span class="sv">$routePattern</span>,</span><span class="prm"><span class="st">callable</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$name</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Maps a route to a handler that only matches if the HTTP method is PUT</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-sethandler">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">setHandler</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$isLazy</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Sets the main handler</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-setlazy">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">setLazy</span>( <span class="st">bool</span> <span class="sv">$isLazy</span> )</code>
<span class="desc">Sets if the main handler must be lazy loaded</span>
</a>
<a class="api-item" href="#mvcmicrocollectioninterface-setprefix">
<code class="vis vis-public">public</code>
<code class="ret">CollectionInterface</code>
<code class="sig"><span class="sf">setPrefix</span>( <span class="st">string</span> <span class="sv">$prefix</span> )</code>
<span class="desc">Sets a prefix for all routes added to the collection</span>
</a>
</div>

### Methods

<div class="api-group">Public · 15</div>

<h4 id="mvcmicrocollectioninterface-delete"><code>delete()</code></h4>

```php
public function delete(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is DELETE

<h4 id="mvcmicrocollectioninterface-get"><code>get()</code></h4>

```php
public function get(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is GET

<h4 id="mvcmicrocollectioninterface-gethandler"><code>getHandler()</code></h4>

```php
public function getHandler(): mixed;
```

Returns the main handler

<h4 id="mvcmicrocollectioninterface-gethandlers"><code>getHandlers()</code></h4>

```php
public function getHandlers(): array;
```

Returns the registered handlers

<h4 id="mvcmicrocollectioninterface-getprefix"><code>getPrefix()</code></h4>

```php
public function getPrefix(): string;
```

Returns the collection prefix if any

<h4 id="mvcmicrocollectioninterface-head"><code>head()</code></h4>

```php
public function head(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is HEAD

<h4 id="mvcmicrocollectioninterface-islazy"><code>isLazy()</code></h4>

```php
public function isLazy(): bool;
```

Returns if the main handler must be lazy loaded

<h4 id="mvcmicrocollectioninterface-map"><code>map()</code></h4>

```php
public function map(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler

<h4 id="mvcmicrocollectioninterface-options"><code>options()</code></h4>

```php
public function options(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is OPTIONS

<h4 id="mvcmicrocollectioninterface-patch"><code>patch()</code></h4>

```php
public function patch(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is PATCH

<h4 id="mvcmicrocollectioninterface-post"><code>post()</code></h4>

```php
public function post(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is POST

<h4 id="mvcmicrocollectioninterface-put"><code>put()</code></h4>

```php
public function put(
string $routePattern,
callable $handler,
string|null $name = null
): CollectionInterface;
```

Maps a route to a handler that only matches if the HTTP method is PUT

<h4 id="mvcmicrocollectioninterface-sethandler"><code>setHandler()</code></h4>

```php
public function setHandler(
mixed $handler,
bool $isLazy = false
): CollectionInterface;
```

Sets the main handler

<h4 id="mvcmicrocollectioninterface-setlazy"><code>setLazy()</code></h4>

```php
public function setLazy( bool $isLazy ): CollectionInterface;
```

Sets if the main handler must be lazy loaded

<h4 id="mvcmicrocollectioninterface-setprefix"><code>setPrefix()</code></h4>

```php
public function setPrefix( string $prefix ): CollectionInterface;
```

Sets a prefix for all routes added to the collection

## Mvc\Micro\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exception.zep">Source on GitHub</a>

Exceptions thrown in Phalcon\Mvc\Micro will use this class

<div class="api-tree">

- `\Exception`
- **`Phalcon\Mvc\Micro\Exception`**
- [`Phalcon\Mvc\Micro\Exceptions\ContainerRequired`](#mvcmicroexceptionscontainerrequired)
- [`Phalcon\Mvc\Micro\Exceptions\ErrorHandlerNotCallable`](#mvcmicroexceptionserrorhandlernotcallable)
- [`Phalcon\Mvc\Micro\Exceptions\HandlerNotCallable`](#mvcmicroexceptionshandlernotcallable)
- [`Phalcon\Mvc\Micro\Exceptions\InvalidRegisteredHandler`](#mvcmicroexceptionsinvalidregisteredhandler)
- [`Phalcon\Mvc\Micro\Exceptions\LazyHandlerNotFound`](#mvcmicroexceptionslazyhandlernotfound)
- [`Phalcon\Mvc\Micro\Exceptions\MissingCollectionMainHandler`](#mvcmicroexceptionsmissingcollectionmainhandler)
- [`Phalcon\Mvc\Micro\Exceptions\NoHandlersToMount`](#mvcmicroexceptionsnohandlerstomount)
- [`Phalcon\Mvc\Micro\Exceptions\NoMatchedRouteHandler`](#mvcmicroexceptionsnomatchedroutehandler)
- [`Phalcon\Mvc\Micro\Exceptions\NotFoundHandlerNotCallable`](#mvcmicroexceptionsnotfoundhandlernotcallable)
- [`Phalcon\Mvc\Micro\Exceptions\ResponseHandlerNotCallable`](#mvcmicroexceptionsresponsehandlernotcallable)

</div>

## Mvc\Micro\Exceptions\ContainerRequired

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/ContainerRequired.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\ContainerRequired`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionscontainerrequired-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionscontainerrequired-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\Exceptions\ErrorHandlerNotCallable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/ErrorHandlerNotCallable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\ErrorHandlerNotCallable`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionserrorhandlernotcallable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionserrorhandlernotcallable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\Exceptions\HandlerNotCallable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/HandlerNotCallable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\HandlerNotCallable`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionshandlernotcallable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$type</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionshandlernotcallable-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $type );
```

## Mvc\Micro\Exceptions\InvalidRegisteredHandler

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/InvalidRegisteredHandler.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\InvalidRegisteredHandler`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionsinvalidregisteredhandler-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionsinvalidregisteredhandler-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\Exceptions\LazyHandlerNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/LazyHandlerNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\LazyHandlerNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionslazyhandlernotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$definition</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionslazyhandlernotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $definition );
```

## Mvc\Micro\Exceptions\MissingCollectionMainHandler

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/MissingCollectionMainHandler.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\MissingCollectionMainHandler`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionsmissingcollectionmainhandler-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionsmissingcollectionmainhandler-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\Exceptions\NoHandlersToMount

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/NoHandlersToMount.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\NoHandlersToMount`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionsnohandlerstomount-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionsnohandlerstomount-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\Exceptions\NoMatchedRouteHandler

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/NoMatchedRouteHandler.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\NoMatchedRouteHandler`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionsnomatchedroutehandler-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionsnomatchedroutehandler-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\Exceptions\NotFoundHandlerNotCallable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/NotFoundHandlerNotCallable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\NotFoundHandlerNotCallable`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionsnotfoundhandlernotcallable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionsnotfoundhandlernotcallable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\Exceptions\ResponseHandlerNotCallable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/Exceptions/ResponseHandlerNotCallable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Micro\Exception`](#mvcmicroexception)
- **`Phalcon\Mvc\Micro\Exceptions\ResponseHandlerNotCallable`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicroexceptionsresponsehandlernotcallable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicroexceptionsresponsehandlernotcallable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Micro\LazyLoader

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/LazyLoader.zep">Source on GitHub</a>

Phalcon\Mvc\Micro\LazyLoader

Lazy-Load of handlers for Mvc\Micro using auto-loading

<div class="api-tree">

- **`Phalcon\Mvc\Micro\LazyLoader`**

</div>

__Uses__ `Phalcon\Mvc\Micro\Exceptions\LazyHandlerNotFound` · `Phalcon\Mvc\Model\BinderInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicrolazyloader-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$definition</span> )</code>
<span class="desc">Phalcon\Mvc\Micro\LazyLoader constructor</span>
</a>
<a class="api-item" href="#mvcmicrolazyloader-callmethod">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">callMethod</span>(<span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$arguments</span>,</span><span class="prm"><span class="st">BinderInterface|null</span> <span class="sv">$modelBinder</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Calling __call method</span>
</a>
<a class="api-item" href="#mvcmicrolazyloader-getdefinition">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getDefinition</span>()</code>
</a>
<a class="api-item" href="#mvcmicrolazyloader-gethandler">
<code class="vis vis-public">public</code>
<code class="ret">object|null</code>
<code class="sig"><span class="sf">getHandler</span>()</code>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$definition</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">object|null</code>
<code class="sig"><span class="sv">$handler</span><span class="sm"> = null</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="mvcmicrolazyloader-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $definition );
```

Phalcon\Mvc\Micro\LazyLoader constructor

<h4 id="mvcmicrolazyloader-callmethod"><code>callMethod()</code></h4>

```php
public function callMethod(
string $method,
mixed $arguments,
BinderInterface|null $modelBinder = null
);
```

Calling __call method

<h4 id="mvcmicrolazyloader-getdefinition"><code>getDefinition()</code></h4>

```php
public function getDefinition(): string;
```

<h4 id="mvcmicrolazyloader-gethandler"><code>getHandler()</code></h4>

```php
public function getHandler(): object|null;
```

## Mvc\Micro\MiddlewareInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Micro/MiddlewareInterface.zep">Source on GitHub</a>

Allows to implement Phalcon\Mvc\Micro middleware in classes

<div class="api-tree">

- **`Phalcon\Mvc\Micro\MiddlewareInterface`**

</div>

__Uses__ `Phalcon\Mvc\Micro`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmicromiddlewareinterface-call">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">call</span>( <span class="st">Micro</span> <span class="sv">$application</span> )</code>
<span class="desc">Calls the middleware</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmicromiddlewareinterface-call"><code>call()</code></h4>

```php
public function call( Micro $application );
```

Calls the middleware

## Mvc\Model

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model.zep">Source on GitHub</a>

Phalcon\Mvc\Model

Phalcon\Mvc\Model connects business objects and database tables to create a
persistable domain model where logic and data are presented in one wrapping.
It‘s an implementation of the object-relational mapping (ORM).

A model represents the information (data) of the application and the rules to
manipulate that data. Models are primarily used for managing the rules of
interaction with a corresponding database table. In most cases, each table in
your database will correspond to one model in your application. The bulk of
your application's business logic will be concentrated in the models.

Phalcon\Mvc\Model is the first ORM written in Zephir/C languages for PHP,
giving to developers high performance when interacting with databases while
is also easy to use.

```php
$invoice = new Invoices();

$invoice->inv_status_flag = "mechanical";
$invoice->inv_title = "Test Invoice";
$invoice->inv_total = 1952;

if ($invoice->save() === false) {
echo "Umh, We can store invoices: ";

$messages = $invoice->getMessages();

foreach ($messages as $message) {
    echo $message;
}
} else {
echo "Great, a new invoice was saved successfully!";
}
```

Magic property and method resolution:

`__get($property)` resolves in order: a relation alias (returning unsaved
`dirtyRelated` records first, then a non-reusable single related model held
in the `related` cache - resultsets and reusable relations are never served
from that cache - otherwise the freshly fetched related records); then a
`get<Property>()` getter when one exists; otherwise it raises an
"undefined property" notice and returns null.

`__call()` / `__callStatic($method, $arguments)` resolve the `findBy<Field>`,
`findFirstBy<Field>`, and `countBy<Field>` magic finders through
`invokeFinder()`. The instance `__call()` additionally tries relation getters
and a behavior/listener `missingMethod()` hook. An unresolved method throws
`Phalcon\Mvc\Model\Exceptions\MethodNotFound`.

@template T of static

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\AbstractInjectionAware`](/5.19/api/phalcon_di/#diabstractinjectionaware)
- **`Phalcon\Mvc\Model`** - implements [`Phalcon\Mvc\EntityInterface`](#mvcentityinterface), [`Phalcon\Mvc\ModelInterface`](#mvcmodelinterface), [`Phalcon\Mvc\Model\ResultInterface`](#mvcmodelresultinterface), `\JsonSerializable`

</div>

__Uses__ `JsonSerializable` · `Phalcon\Db\Adapter\AdapterInterface` · `Phalcon\Db\Column` · `Phalcon\Db\Enum` · `Phalcon\Db\Geometry\WkbParser` · `Phalcon\Db\RawValue` · `Phalcon\Di\AbstractInjectionAware` · `Phalcon\Di\Di` · `Phalcon\Di\DiInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Filter\Validation\ValidationInterface` · `Phalcon\Messages\Message` · `Phalcon\Messages\MessageInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\BehaviorInterface` · `Phalcon\Mvc\Model\Criteria` · `Phalcon\Mvc\Model\CriteriaInterface` · `Phalcon\Mvc\Model\Eager\Loader` · `Phalcon\Mvc\Model\Eager\PathTree` · `Phalcon\Mvc\Model\Exception` · `Phalcon\Mvc\Model\Exceptions\BelongsToRequiresObject` · `Phalcon\Mvc\Model\Exceptions\BindTypeNotDefined` · `Phalcon\Mvc\Model\Exceptions\CannotResolveAttribute` · `Phalcon\Mvc\Model\Exceptions\ColumnNotInMap` · `Phalcon\Mvc\Model\Exceptions\ColumnNotInTableColumns` · `Phalcon\Mvc\Model\Exceptions\ColumnNotInTableMap` · `Phalcon\Mvc\Model\Exceptions\DataTypeNotDefined` · `Phalcon\Mvc\Model\Exceptions\IdentityNotInColumnMap` · `Phalcon\Mvc\Model\Exceptions\IdentityNotInTableColumns` · `Phalcon\Mvc\Model\Exceptions\InvalidDumpResultKey` · `Phalcon\Mvc\Model\Exceptions\InvalidEagerParameter` · `Phalcon\Mvc\Model\Exceptions\InvalidFindParameters` · `Phalcon\Mvc\Model\Exceptions\InvalidModelsManagerService` · `Phalcon\Mvc\Model\Exceptions\InvalidModelsMetadataService` · `Phalcon\Mvc\Model\Exceptions\MethodNotFound` · `Phalcon\Mvc\Model\Exceptions\ModelOrmServicesUnavailable` · `Phalcon\Mvc\Model\Exceptions\PrimaryKeyAttributeNotSet` · `Phalcon\Mvc\Model\Exceptions\PrimaryKeyRequired` · `Phalcon\Mvc\Model\Exceptions\PropertyNotAccessible` · `Phalcon\Mvc\Model\Exceptions\RecordCannotRefresh` · `Phalcon\Mvc\Model\Exceptions\RecordNotPersisted` · `Phalcon\Mvc\Model\Exceptions\RelationNotDefined` · `Phalcon\Mvc\Model\Exceptions\RelationRequiresObjectOrArray` · `Phalcon\Mvc\Model\Exceptions\SnapshotsDisabled` · `Phalcon\Mvc\Model\Exceptions\StaticMethodRequiresOneArgument` · `Phalcon\Mvc\Model\Exceptions\UnsupportedEagerHydration` · `Phalcon\Mvc\Model\Exceptions\UnsupportedEagerResultset` · `Phalcon\Mvc\Model\Exceptions\UpdateSnapshotDisabled` · `Phalcon\Mvc\Model\Hydration\CloneResultMapHydrate` · `Phalcon\Mvc\Model\ManagerInterface` · `Phalcon\Mvc\Model\MetaDataInterface` · `Phalcon\Mvc\Model\Query` · `Phalcon\Mvc\Model\QueryInterface` · `Phalcon\Mvc\Model\Query\Builder` · `Phalcon\Mvc\Model\Query\BuilderInterface` · `Phalcon\Mvc\Model\Relation` · `Phalcon\Mvc\Model\RelationInterface` · `Phalcon\Mvc\Model\ResultInterface` · `Phalcon\Mvc\Model\Resultset` · `Phalcon\Mvc\Model\ResultsetInterface` · `Phalcon\Mvc\Model\Resultset\Simple` · `Phalcon\Mvc\Model\TransactionInterface` · `Phalcon\Mvc\Model\ValidationFailed` · `Phalcon\Support\Collection` · `Phalcon\Support\Collection\CollectionInterface` · `Phalcon\Support\Settings` · `ReflectionClass` · `ReflectionProperty`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodel-__call">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__call</span>(<span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span></span>)</code>
<span class="desc">Handles method calls when a method is not implemented</span>
</a>
<a class="api-item" href="#mvcmodel-__callstatic">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__callStatic</span>(<span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span></span>)</code>
<span class="desc">Handles method calls when a static method is not implemented</span>
</a>
<a class="api-item" href="#mvcmodel-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$data</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">ManagerInterface|null</span> <span class="sv">$modelsManager</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model constructor</span>
</a>
<a class="api-item" href="#mvcmodel-__get">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__get</span>( <span class="st">string</span> <span class="sv">$property</span> )</code>
<span class="desc">Magic method to get related records using the relation alias as a</span>
</a>
<a class="api-item" href="#mvcmodel-__isset">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">__isset</span>( <span class="st">string</span> <span class="sv">$property</span> )</code>
<span class="desc">Magic method to check if a property is a valid relation</span>
</a>
<a class="api-item" href="#mvcmodel-__serialize">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">__serialize</span>()</code>
<span class="desc">Serializes a model</span>
</a>
<a class="api-item" href="#mvcmodel-__set">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__set</span>(<span class="prm"><span class="st">string</span> <span class="sv">$property</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Magic method to assign values to the the model</span>
</a>
<a class="api-item" href="#mvcmodel-__unserialize">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">__unserialize</span>( <span class="st">array</span> <span class="sv">$data</span> )</code>
<span class="desc">Unserializes an array to the model</span>
</a>
<a class="api-item" href="#mvcmodel-addbehavior">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">addBehavior</span>( <span class="st">BehaviorInterface</span> <span class="sv">$behavior</span> )</code>
<span class="desc">Setups a behavior in a model</span>
</a>
<a class="api-item" href="#mvcmodel-appendmessage">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">appendMessage</span>( <span class="st">MessageInterface</span> <span class="sv">$message</span> )</code>
<span class="desc">Appends a customized message on the validation process</span>
</a>
<a class="api-item" href="#mvcmodel-appendmessagesfrom">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">appendMessagesFrom</span>( <span class="st">mixed</span> <span class="sv">$model</span> )</code>
<span class="desc">Append messages to this model from another Model.</span>
</a>
<a class="api-item" href="#mvcmodel-assign">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">assign</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$whiteList</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$dataColumnMap</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Assigns values to a model from an array</span>
</a>
<a class="api-item" href="#mvcmodel-average">
<code class="vis vis-public">public</code>
<code class="ret">float|ResultsetInterface</code>
<code class="sig"><span class="sf">average</span>( <span class="st">array</span> <span class="sv">$parameters</span><span class="sm"> = []</span> )</code>
<span class="desc">Returns the average value on a column for a result-set of rows matching</span>
</a>
<a class="api-item" href="#mvcmodel-cloneresult">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">cloneResult</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$base</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$dirtyState</span><span class="sm"> = 0</span></span>)</code>
<span class="desc">Assigns values to a model from an array returning a new model</span>
</a>
<a class="api-item" href="#mvcmodel-cloneresultmap">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">cloneResultMap</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$base</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$dirtyState</span><span class="sm"> = 0</span>,</span><span class="prm"><span class="st">bool|null</span> <span class="sv">$keepSnapshots</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Assigns values to a model from an array, returning a new model.</span>
</a>
<a class="api-item" href="#mvcmodel-cloneresultmaphydrate">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">cloneResultMapHydrate</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$hydrationMode</span></span>)</code>
<span class="desc">Returns an hydrated result based on the data and the column map</span>
</a>
<a class="api-item" href="#mvcmodel-count">
<code class="vis vis-public">public</code>
<code class="ret">int|ResultsetInterface</code>
<code class="sig"><span class="sf">count</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Counts how many records match the specified conditions.</span>
</a>
<a class="api-item" href="#mvcmodel-create">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">create</span>()</code>
<span class="desc">Inserts a model instance. If the instance already exists in the</span>
</a>
<a class="api-item" href="#mvcmodel-delete">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">delete</span>()</code>
<span class="desc">Deletes a model instance. Returning true on success or false otherwise.</span>
</a>
<a class="api-item" href="#mvcmodel-dosave">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">doSave</span>( <span class="st">CollectionInterface</span> <span class="sv">$visited</span> )</code>
<span class="desc">Inserted or updates model instance, expects a visited list of objects.</span>
</a>
<a class="api-item" href="#mvcmodel-dump">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">dump</span>()</code>
<span class="desc">Returns a simple representation of the object that can be used with</span>
</a>
<a class="api-item" href="#mvcmodel-find">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">find</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Query for a set of records that match the specified conditions</span>
</a>
<a class="api-item" href="#mvcmodel-findfirst">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">findFirst</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Query the first record that matches the specified conditions</span>
</a>
<a class="api-item" href="#mvcmodel-fireevent">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">fireEvent</span>( <span class="st">string</span> <span class="sv">$eventName</span> )</code>
<span class="desc">Fires an event, implicitly calls behaviors and listeners in the events</span>
</a>
<a class="api-item" href="#mvcmodel-fireeventcancel">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">fireEventCancel</span>( <span class="st">string</span> <span class="sv">$eventName</span> )</code>
<span class="desc">Fires an event, implicitly calls behaviors and listeners in the events</span>
</a>
<a class="api-item" href="#mvcmodel-getchangedfields">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getChangedFields</span>()</code>
<span class="desc">Returns a list of changed values.</span>
</a>
<a class="api-item" href="#mvcmodel-getdirtystate">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getDirtyState</span>()</code>
<span class="desc">Returns one of the DIRTY_STATE_* constants telling if the record exists</span>
</a>
<a class="api-item" href="#mvcmodel-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">EventsManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the custom events manager or null if there is no custom events manager</span>
</a>
<a class="api-item" href="#mvcmodel-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">MessageInterface[]</code>
<code class="sig"><span class="sf">getMessages</span>( <span class="st">mixed</span> <span class="sv">$filter</span><span class="sm"> = null</span> )</code>
<span class="desc">Returns array of validation messages</span>
</a>
<a class="api-item" href="#mvcmodel-getmodelsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface</code>
<code class="sig"><span class="sf">getModelsManager</span>()</code>
<span class="desc">Returns the models manager related to the entity instance</span>
</a>
<a class="api-item" href="#mvcmodel-getmodelsmetadata">
<code class="vis vis-public">public</code>
<code class="ret">MetaDataInterface</code>
<code class="sig"><span class="sf">getModelsMetaData</span>()</code>
<span class="desc">\{@inheritdoc\}</span>
</a>
<a class="api-item" href="#mvcmodel-getoldsnapshotdata">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOldSnapshotData</span>()</code>
<span class="desc">Returns the internal old snapshot data</span>
</a>
<a class="api-item" href="#mvcmodel-getoperationmade">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getOperationMade</span>()</code>
<span class="desc">Returns the type of the latest operation performed by the ORM</span>
</a>
<a class="api-item" href="#mvcmodel-getreadconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getReadConnection</span>()</code>
<span class="desc">Gets the connection used to read data for the model</span>
</a>
<a class="api-item" href="#mvcmodel-getreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getReadConnectionService</span>()</code>
<span class="desc">Returns the DependencyInjection connection service name used to read data</span>
</a>
<a class="api-item" href="#mvcmodel-getrelated">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getRelated</span>(<span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$arguments</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Returns related records based on defined relations</span>
</a>
<a class="api-item" href="#mvcmodel-getschema">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getSchema</span>()</code>
<span class="desc">Returns schema name where the mapped table is located</span>
</a>
<a class="api-item" href="#mvcmodel-getsnapshotdata">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getSnapshotData</span>()</code>
<span class="desc">Returns the internal snapshot data</span>
</a>
<a class="api-item" href="#mvcmodel-getsource">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getSource</span>()</code>
<span class="desc">Returns the table name mapped in the model</span>
</a>
<a class="api-item" href="#mvcmodel-gettransaction">
<code class="vis vis-public">public</code>
<code class="ret">TransactionInterface|null</code>
<code class="sig"><span class="sf">getTransaction</span>()</code>
</a>
<a class="api-item" href="#mvcmodel-getupdatedfields">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getUpdatedFields</span>()</code>
<span class="desc">Returns a list of updated values.</span>
</a>
<a class="api-item" href="#mvcmodel-getwriteconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getWriteConnection</span>()</code>
<span class="desc">Gets the connection used to write data to the model</span>
</a>
<a class="api-item" href="#mvcmodel-getwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getWriteConnectionService</span>()</code>
<span class="desc">Returns the DependencyInjection connection service name used to write</span>
</a>
<a class="api-item" href="#mvcmodel-haschanged">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasChanged</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$fieldName</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$allFields</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Check if a specific attribute has changed</span>
</a>
<a class="api-item" href="#mvcmodel-hassnapshotdata">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasSnapshotData</span>()</code>
<span class="desc">Checks if the object has internal snapshot data</span>
</a>
<a class="api-item" href="#mvcmodel-hasupdated">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasUpdated</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$fieldName</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$allFields</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Check if a specific attribute was updated</span>
</a>
<a class="api-item" href="#mvcmodel-isrelationshiploaded">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isRelationshipLoaded</span>( <span class="st">string</span> <span class="sv">$relationshipAlias</span> )</code>
<span class="desc">Checks if saved related records have already been loaded.</span>
</a>
<a class="api-item" href="#mvcmodel-jsonserialize">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">jsonSerialize</span>()</code>
<span class="desc">Serializes the object for json_encode</span>
</a>
<a class="api-item" href="#mvcmodel-maximum">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">maximum</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Returns the maximum value of a column for a result-set of rows that match</span>
</a>
<a class="api-item" href="#mvcmodel-minimum">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">minimum</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Returns the minimum value of a column for a result-set of rows that match</span>
</a>
<a class="api-item" href="#mvcmodel-query">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">query</span>( <span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span> )</code>
<span class="desc">Create a criteria for a specific model</span>
</a>
<a class="api-item" href="#mvcmodel-readattribute">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">readAttribute</span>( <span class="st">string</span> <span class="sv">$attribute</span> )</code>
<span class="desc">Reads an attribute value by its name</span>
</a>
<a class="api-item" href="#mvcmodel-refresh">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">refresh</span>()</code>
<span class="desc">Refreshes the model attributes re-querying the record from the database</span>
</a>
<a class="api-item" href="#mvcmodel-save">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">save</span>()</code>
<span class="desc">Inserts or updates a model instance. Returning true on success or false</span>
</a>
<a class="api-item" href="#mvcmodel-serialize">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">serialize</span>()</code>
<span class="desc">Serializes the object ignoring connections, services, related objects or</span>
</a>
<a class="api-item" href="#mvcmodel-setconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setConnectionService</span>( <span class="st">string</span> <span class="sv">$connectionService</span> )</code>
<span class="desc">Sets the DependencyInjection connection service name</span>
</a>
<a class="api-item" href="#mvcmodel-setdirtystate">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|bool</code>
<code class="sig"><span class="sf">setDirtyState</span>( <span class="st">int</span> <span class="sv">$dirtyState</span> )</code>
<span class="desc">Sets the dirty state of the object using one of the DIRTY_STATE_* constants</span>
</a>
<a class="api-item" href="#mvcmodel-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">EventsManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets a custom events manager</span>
</a>
<a class="api-item" href="#mvcmodel-setoldsnapshotdata">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setOldSnapshotData</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets the record&#039;s old snapshot data.</span>
</a>
<a class="api-item" href="#mvcmodel-setreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setReadConnectionService</span>( <span class="st">string</span> <span class="sv">$connectionService</span> )</code>
<span class="desc">Sets the DependencyInjection connection service name used to read data</span>
</a>
<a class="api-item" href="#mvcmodel-setrelated">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">setRelated</span>(<span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$records</span></span>)</code>
<span class="desc">Stores related records in the relation cache, so that a subsequent</span>
</a>
<a class="api-item" href="#mvcmodel-setsnapshotdata">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setSnapshotData</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets the record&#039;s snapshot data.</span>
</a>
<a class="api-item" href="#mvcmodel-setsync">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">setSync</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$elements</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$enabled</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Marks one or more many-to-many relationships to be synchronized (or not)</span>
</a>
<a class="api-item" href="#mvcmodel-settransaction">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">setTransaction</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">Sets a transaction related to the Model instance</span>
</a>
<a class="api-item" href="#mvcmodel-setwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setWriteConnectionService</span>( <span class="st">string</span> <span class="sv">$connectionService</span> )</code>
<span class="desc">Sets the DependencyInjection connection service name used to write data</span>
</a>
<a class="api-item" href="#mvcmodel-setup">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setup</span>( <span class="st">array</span> <span class="sv">$options</span> )</code>
<span class="desc">Enables/disables options in the ORM.</span>
</a>
<a class="api-item" href="#mvcmodel-skipoperation">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">skipOperation</span>( <span class="st">bool</span> <span class="sv">$skip</span> )</code>
<span class="desc">Skips the current operation forcing a success state</span>
</a>
<a class="api-item" href="#mvcmodel-sum">
<code class="vis vis-public">public</code>
<code class="ret">float|ResultsetInterface</code>
<code class="sig"><span class="sf">sum</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Calculates the sum on a column for a result-set of rows that match the</span>
</a>
<a class="api-item" href="#mvcmodel-toarray">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">toArray</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$columns</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$useGetter</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Returns the instance as an array representation</span>
</a>
<a class="api-item" href="#mvcmodel-unserialize">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">unserialize</span>( <span class="st">string</span> <span class="sv">$data</span> )</code>
<span class="desc">Unserializes the object from a serialized string</span>
</a>
<a class="api-item" href="#mvcmodel-update">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">update</span>()</code>
<span class="desc">Updates a model instance. If the instance does not exist in the</span>
</a>
<a class="api-item" href="#mvcmodel-validationhasfailed">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">validationHasFailed</span>()</code>
<span class="desc">Check whether validation process has generated any messages</span>
</a>
<a class="api-item" href="#mvcmodel-writeattribute">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">writeAttribute</span>(<span class="prm"><span class="st">string</span> <span class="sv">$attribute</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Writes an attribute value by its name</span>
</a>
<a class="api-item" href="#mvcmodel-allowemptystringvalues">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">allowEmptyStringValues</span>( <span class="st">array</span> <span class="sv">$attributes</span> )</code>
<span class="desc">Sets a list of attributes that must be skipped from the</span>
</a>
<a class="api-item" href="#mvcmodel-belongsto">
<code class="vis vis-protected">protected</code>
<code class="ret">Relation</code>
<code class="sig"><span class="sf">belongsTo</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referenceModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a reverse 1-1 or n-1 relation between two models</span>
</a>
<a class="api-item" href="#mvcmodel-canceloperation">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">cancelOperation</span>()</code>
<span class="desc">Cancel the current operation</span>
</a>
<a class="api-item" href="#mvcmodel-checkforeignkeysrestrict">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">checkForeignKeysRestrict</span>()</code>
<span class="desc">Reads &quot;belongs to&quot; relations and check the virtual foreign keys when</span>
</a>
<a class="api-item" href="#mvcmodel-checkforeignkeysreversecascade">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">checkForeignKeysReverseCascade</span>()</code>
<span class="desc">Reads both &quot;hasMany&quot; and &quot;hasOne&quot; relations and checks the virtual</span>
</a>
<a class="api-item" href="#mvcmodel-checkforeignkeysreverserestrict">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">checkForeignKeysReverseRestrict</span>()</code>
<span class="desc">Reads both &quot;hasMany&quot; and &quot;hasOne&quot; relations and checks the virtual</span>
</a>
<a class="api-item" href="#mvcmodel-collectrelatedtosave">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">collectRelatedToSave</span>()</code>
<span class="desc">Collects previously queried (belongs-to, has-one and has-one-through)</span>
</a>
<a class="api-item" href="#mvcmodel-dolowinsert">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">doLowInsert</span>(<span class="prm"><span class="st">MetaDataInterface</span> <span class="sv">$metaData</span>,</span><span class="prm"><span class="st">AdapterInterface</span> <span class="sv">$connection</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$table</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$identityField</span></span>)</code>
<span class="desc">Sends a pre-build INSERT SQL statement to the relational database system</span>
</a>
<a class="api-item" href="#mvcmodel-dolowupdate">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">doLowUpdate</span>(<span class="prm"><span class="st">MetaDataInterface</span> <span class="sv">$metaData</span>,</span><span class="prm"><span class="st">AdapterInterface</span> <span class="sv">$connection</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$table</span></span>)</code>
<span class="desc">Sends a pre-build UPDATE SQL statement to the relational database system</span>
</a>
<a class="api-item" href="#mvcmodel-getrelatedrecords">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">getRelatedRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span></span>)</code>
<span class="desc">Returns related records defined relations depending on the method name.</span>
</a>
<a class="api-item" href="#mvcmodel-groupresult">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">groupResult</span>(<span class="prm"><span class="st">string</span> <span class="sv">$functionName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Generate a PHQL SELECT statement for an aggregate</span>
</a>
<a class="api-item" href="#mvcmodel-has">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">has</span>(<span class="prm"><span class="st">MetaDataInterface</span> <span class="sv">$metaData</span>,</span><span class="prm"><span class="st">AdapterInterface</span> <span class="sv">$connection</span></span>)</code>
<span class="desc">Checks whether the current record already exists</span>
</a>
<a class="api-item" href="#mvcmodel-hasmany">
<code class="vis vis-protected">protected</code>
<code class="ret">Relation</code>
<code class="sig"><span class="sf">hasMany</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referenceModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a 1-n relation between two models</span>
</a>
<a class="api-item" href="#mvcmodel-hasmanytomany">
<code class="vis vis-protected">protected</code>
<code class="ret">Relation</code>
<code class="sig"><span class="sf">hasManyToMany</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referenceModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup an n-n relation between two models, through an intermediate</span>
</a>
<a class="api-item" href="#mvcmodel-hasone">
<code class="vis vis-protected">protected</code>
<code class="ret">Relation</code>
<code class="sig"><span class="sf">hasOne</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referenceModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a 1-1 relation between two models</span>
</a>
<a class="api-item" href="#mvcmodel-hasonethrough">
<code class="vis vis-protected">protected</code>
<code class="ret">Relation</code>
<code class="sig"><span class="sf">hasOneThrough</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referenceModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a 1-1 relation between two models, through an intermediate</span>
</a>
<a class="api-item" href="#mvcmodel-invokefinder">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">invokeFinder</span>(<span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span></span>)</code>
<span class="desc">Try to check if the query must invoke a finder</span>
</a>
<a class="api-item" href="#mvcmodel-keepsnapshots">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">keepSnapshots</span>( <span class="st">bool</span> <span class="sv">$keepSnapshot</span> )</code>
<span class="desc">Sets if the model must keep the original record snapshot in memory</span>
</a>
<a class="api-item" href="#mvcmodel-possiblesetter">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">possibleSetter</span>(<span class="prm"><span class="st">string</span> <span class="sv">$property</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Check for, and attempt to use, possible setter.</span>
</a>
<a class="api-item" href="#mvcmodel-postsave">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">postSave</span>(<span class="prm"><span class="st">bool</span> <span class="sv">$success</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$exists</span></span>)</code>
<span class="desc">Executes internal events after save a record</span>
</a>
<a class="api-item" href="#mvcmodel-postsaverelatedrecords">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">postSaveRelatedRecords</span>(<span class="prm"><span class="st">AdapterInterface</span> <span class="sv">$connection</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$related</span>,</span><span class="prm"><span class="st">CollectionInterface</span> <span class="sv">$visited</span></span>)</code>
<span class="desc">Save the related records assigned in the has-one/has-many relations</span>
</a>
<a class="api-item" href="#mvcmodel-presave">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">preSave</span>(<span class="prm"><span class="st">MetaDataInterface</span> <span class="sv">$metaData</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$exists</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$identityField</span></span>)</code>
<span class="desc">Executes internal hooks before save a record</span>
</a>
<a class="api-item" href="#mvcmodel-presaverelatedrecords">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">preSaveRelatedRecords</span>(<span class="prm"><span class="st">AdapterInterface</span> <span class="sv">$connection</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$related</span>,</span><span class="prm"><span class="st">CollectionInterface</span> <span class="sv">$visited</span></span>)</code>
<span class="desc">Saves related records that must be stored prior to save the master record</span>
</a>
<a class="api-item" href="#mvcmodel-setschema">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">setSchema</span>( <span class="st">string</span> <span class="sv">$schema</span> )</code>
<span class="desc">Sets schema name where the mapped table is located</span>
</a>
<a class="api-item" href="#mvcmodel-setsource">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">setSource</span>( <span class="st">string</span> <span class="sv">$source</span> )</code>
<span class="desc">Sets the table name to which model should be mapped</span>
</a>
<a class="api-item" href="#mvcmodel-skipattributes">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">skipAttributes</span>( <span class="st">array</span> <span class="sv">$attributes</span> )</code>
<span class="desc">Sets a list of attributes that must be skipped from the</span>
</a>
<a class="api-item" href="#mvcmodel-skipattributesoncreate">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">skipAttributesOnCreate</span>( <span class="st">array</span> <span class="sv">$attributes</span> )</code>
<span class="desc">Sets a list of attributes that must be skipped from the</span>
</a>
<a class="api-item" href="#mvcmodel-skipattributesonupdate">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">skipAttributesOnUpdate</span>( <span class="st">array</span> <span class="sv">$attributes</span> )</code>
<span class="desc">Sets a list of attributes that must be skipped from the</span>
</a>
<a class="api-item" href="#mvcmodel-usedynamicupdate">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">useDynamicUpdate</span>( <span class="st">bool</span> <span class="sv">$dynamicUpdate</span> )</code>
<span class="desc">Sets if a model must use dynamic update instead of the all-field update</span>
</a>
<a class="api-item" href="#mvcmodel-validate">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">validate</span>( <span class="st">ValidationInterface</span> <span class="sv">$validator</span> )</code>
<span class="desc">Executes validators on every validation call</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">DIRTY_STATE_DETACHED</span><span class="sm"> = 2</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">DIRTY_STATE_PERSISTENT</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">DIRTY_STATE_TRANSIENT</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">OP_CREATE</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">OP_DELETE</span><span class="sm"> = 3</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">OP_NONE</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">OP_UPDATE</span><span class="sm"> = 2</span></code>
</div>
<div class="api-item">
<code class="ret">string</code>
<code class="sig"><span class="sc">TRANSACTION_INDEX</span><span class="sm"> = &quot;transaction&quot;</span></code>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$dirtyRelated</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$dirtyState</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$errorMessages</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$modelsManager</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">MetaDataInterface|null</code>
<code class="sig"><span class="sv">$modelsMetaData</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$oldSnapshot</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$operationMade</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$rawValues</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$related</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$skipped</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$snapshot</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$syncRelated</span><span class="sm"> = []</span></code>
<span class="desc">Per-save many-to-many sync overrides, keyed by lowercased relation alias (or &quot;*&quot; wildcard) =&gt; bool. Cleared after each save().</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">TransactionInterface|null</code>
<code class="sig"><span class="sv">$transaction</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$uniqueKey</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$uniqueParams</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$uniqueTypes</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 73</div>

<h4 id="mvcmodel-__call"><code>__call()</code></h4>

```php
public function __call(
string $method,
array $arguments
);
```

Handles method calls when a method is not implemented

<h4 id="mvcmodel-__callstatic"><code>__callStatic()</code></h4>

```php
public static function __callStatic(
string $method,
array $arguments
);
```

Handles method calls when a static method is not implemented

<h4 id="mvcmodel-__construct"><code>__construct()</code></h4>

```php
final public function __construct(
mixed $data = null,
DiInterface|null $container = null,
ManagerInterface|null $modelsManager = null
);
```

Phalcon\Mvc\Model constructor

<h4 id="mvcmodel-__get"><code>__get()</code></h4>

```php
public function __get( string $property );
```

Magic method to get related records using the relation alias as a
property

<h4 id="mvcmodel-__isset"><code>__isset()</code></h4>

```php
public function __isset( string $property ): bool;
```

Magic method to check if a property is a valid relation

<h4 id="mvcmodel-__serialize"><code>__serialize()</code></h4>

```php
public function __serialize(): array;
```

Serializes a model

<h4 id="mvcmodel-__set"><code>__set()</code></h4>

```php
public function __set(
string $property,
mixed $value
);
```

Magic method to assign values to the the model

<h4 id="mvcmodel-__unserialize"><code>__unserialize()</code></h4>

```php
public function __unserialize( array $data ): void;
```

Unserializes an array to the model

<h4 id="mvcmodel-addbehavior"><code>addBehavior()</code></h4>

```php
public function addBehavior( BehaviorInterface $behavior ): void;
```

Setups a behavior in a model

```php
use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Behavior\Timestampable;

class Invoices extends Model
{
public function initialize()
{
    $this->addBehavior(
        new Timestampable(
            [
                "beforeCreate" => [
                    "field"  => "created_at",
                    "format" => "Y-m-d",
                ],
            ]
        )
    );

    $this->addBehavior(
        new Timestampable(
            [
                "beforeUpdate" => [
                    "field"  => "updated_at",
                    "format" => "Y-m-d",
                ],
            ]
        )
    );
}
}
```

<h4 id="mvcmodel-appendmessage"><code>appendMessage()</code></h4>

```php
public function appendMessage( MessageInterface $message ): ModelInterface;
```

Appends a customized message on the validation process

```php
use Phalcon\Mvc\Model;
use Phalcon\Messages\Message as Message;

class Invoices extends Model
{
public function beforeSave()
{
    if ($this->name === "Peter") {
        $message = new Message(
            "Sorry, but an invoice cannot be named Peter"
        );

        $this->appendMessage($message);
    }
}
}
```

<h4 id="mvcmodel-appendmessagesfrom"><code>appendMessagesFrom()</code></h4>

```php
public inline function appendMessagesFrom( mixed $model ): void;
```

Append messages to this model from another Model.

<h4 id="mvcmodel-assign"><code>assign()</code></h4>

```php
public function assign(
array $data,
mixed $whiteList = null,
mixed $dataColumnMap = null
): ModelInterface;
```

Assigns values to a model from an array

```php
$invoice->assign(
[
    "type" => "mechanical",
    "name" => "Test Invoice",
    "year" => 1952,
]
);

// Assign by db row, column map needed
$invoice->assign(
$dbRow,
[
    "db_type" => "type",
    "db_name" => "name",
    "db_year" => "year",
]
);

// Allow assign only name and year
$invoice->assign(
$_POST,
[
    "name",
    "year",
]
);

// By default assign method will use setters if exist, you can disable it by using ini_set to directly use properties

ini_set("phalcon.orm.disable_assign_setters", true);

$invoice->assign(
$_POST,
[
    "name",
    "year",
]
);
```

<h4 id="mvcmodel-average"><code>average()</code></h4>

```php
public static function average( array $parameters = [] ): float|ResultsetInterface;
```

Returns the average value on a column for a result-set of rows matching
the specified conditions.

Returned value will be a float for simple queries or a ResultsetInterface
instance for when the GROUP condition is used. The results will
contain the average of each group.

```php
// What's the average price of invoices?
$average = Invoices::average(
[
    "column" => "inv_total",
]
);

echo "The average price is ", $average, "\n";

// What's the average price of paid invoices?
$average = Invoices::average(
[
    "inv_status_flag = 1",
    "column" => "inv_total",
]
);

echo "The average price of paid invoices is ", $average, "\n";
```

<h4 id="mvcmodel-cloneresult"><code>cloneResult()</code></h4>

```php
public static function cloneResult(
ModelInterface $base,
array $data,
int $dirtyState = 0
): ModelInterface;
```

Assigns values to a model from an array returning a new model

```php
$invoice = Phalcon\Mvc\Model::cloneResult(
new Invoices(),
[
    "type" => "mechanical",
    "name" => "Test Invoice",
    "year" => 1952,
]
);
```

<h4 id="mvcmodel-cloneresultmap"><code>cloneResultMap()</code></h4>

```php
public static function cloneResultMap(
mixed $base,
array $data,
mixed $columnMap,
int $dirtyState = 0,
bool|null $keepSnapshots = null
): ModelInterface;
```

Assigns values to a model from an array, returning a new model.

```php
$invoice = \Phalcon\Mvc\Model::cloneResultMap(
new Invoices(),
[
    "type" => "mechanical",
    "name" => "Test Invoice",
    "year" => 1952,
]
);
```

<h4 id="mvcmodel-cloneresultmaphydrate"><code>cloneResultMapHydrate()</code></h4>

```php
public static function cloneResultMapHydrate(
array $data,
mixed $columnMap,
int $hydrationMode
);
```

Returns an hydrated result based on the data and the column map

<h4 id="mvcmodel-count"><code>count()</code></h4>

```php
public static function count( mixed $parameters = null ): int|ResultsetInterface;
```

Counts how many records match the specified conditions.

Returns an integer for simple queries or a ResultsetInterface
instance for when the GROUP condition is used. The results will
contain the count of each group.

```php
// How many invoices are there?
$number = Invoices::count();

echo "There are ", $number, "\n";

// How many paid invoices are there?
$number = Invoices::count("inv_status_flag = 1");

echo "There are ", $number, " paid invoices\n";
```

<h4 id="mvcmodel-create"><code>create()</code></h4>

```php
public function create(): bool;
```

Inserts a model instance. If the instance already exists in the
persistence it will throw an exception
Returning true on success or false otherwise.

```php
// Creating a new invoice
$invoice = new Invoices();

$invoice->inv_status_flag = "mechanical";
$invoice->inv_title = "Test Invoice";
$invoice->inv_total = 1952;

$invoice->create();

// Passing an array to create
$invoice = new Invoices();

$invoice->assign(
[
    "type" => "mechanical",
    "name" => "Test Invoice",
    "year" => 1952,
]
);

$invoice->create();
```

<h4 id="mvcmodel-delete"><code>delete()</code></h4>

```php
public function delete(): bool;
```

Deletes a model instance. Returning true on success or false otherwise.

```php
$invoice = Invoices::findFirst("id=100");

$invoice->delete();

$invoices = Invoices::find("inv_status_flag = 1");

foreach ($invoices as $invoice) {
$invoice->delete();
}
```

<h4 id="mvcmodel-dosave"><code>doSave()</code></h4>

```php
public function doSave( CollectionInterface $visited ): bool;
```

Inserted or updates model instance, expects a visited list of objects.

<h4 id="mvcmodel-dump"><code>dump()</code></h4>

```php
public function dump(): array;
```

Returns a simple representation of the object that can be used with
`var_dump()`

```php
var_dump(
$invoice->dump()
);
```

<h4 id="mvcmodel-find"><code>find()</code></h4>

```php
public static function find( mixed $parameters = null ): ResultsetInterface;
```

Query for a set of records that match the specified conditions

```php
// How many invoices are there?
$invoices = Invoices::find();

echo "There are ", count($invoices), "\n";

// How many paid invoices are there?
$invoices = Invoices::find(
"inv_status_flag = 1"
);

echo "There are ", count($invoices), "\n";

// Get and print virtual invoices ordered by name
$invoices = Invoices::find(
[
    "type = 'virtual'",
    "order" => "name",
]
);

foreach ($invoices as $invoice) {
echo $invoice->inv_title, "\n";
}

// Get first 100 virtual invoices ordered by name
$invoices = Invoices::find(
[
    "type = 'virtual'",
    "order" => "name",
    "limit" => 100,
]
);

foreach ($invoices as $invoice) {
echo $invoice->inv_title, "\n";
}

// encapsulate find it into an running transaction esp. useful for application unit-tests
// or complex business logic where we wanna control which transactions are used.

$myTransaction = new Transaction(\Phalcon\Di\Di::getDefault());
$myTransaction->begin();

$newInvoices = new Invoices();
$newInvoices->setTransaction($myTransaction);

$newInvoices->assign(
[
    'name' => 'test',
    'type' => 'mechanical',
    'year' => 1944,
]
);

$newInvoices->save();

$resultInsideTransaction = Invoices::find(
[
    'name' => 'test',
    Model::TRANSACTION_INDEX => $myTransaction,
]
);

$resultOutsideTransaction = Invoices::find(['name' => 'test']);

foreach ($setInsideTransaction as $invoice) {
echo $invoice->inv_title, "\n";
}

foreach ($setOutsideTransaction as $invoice) {
echo $invoice->inv_title, "\n";
}

// reverts all not commited changes
$myTransaction->rollback();

// creating two different transactions
$myTransaction1 = new Transaction(\Phalcon\Di\Di::getDefault());
$myTransaction1->begin();
$myTransaction2 = new Transaction(\Phalcon\Di\Di::getDefault());
$myTransaction2->begin();

 // add a new invoices
$firstNewInvoices = new Invoices();
$firstNewInvoices->setTransaction($myTransaction1);
$firstNewInvoices->assign(
[
    'name' => 'first-transaction-invoice',
    'type' => 'mechanical',
    'year' => 1944,
]
);
$firstNewInvoices->save();

$secondNewInvoices = new Invoices();
$secondNewInvoices->setTransaction($myTransaction2);
$secondNewInvoices->assign(
[
    'name' => 'second-transaction-invoice',
    'type' => 'fictional',
    'year' => 1984,
]
);
$secondNewInvoices->save();

// this transaction will find the invoice.
$resultInFirstTransaction = Invoices::find(
[
    'name'                   => 'first-transaction-invoice',
    Model::TRANSACTION_INDEX => $myTransaction1,
]
);

// this transaction won't find the invoice.
$resultInSecondTransaction = Invoices::find(
[
    'name'                   => 'first-transaction-invoice',
    Model::TRANSACTION_INDEX => $myTransaction2,
]
);

// this transaction won't find the invoice.
$resultOutsideAnyExplicitTransaction = Invoices::find(
[
    'name' => 'first-transaction-invoice',
]
);

// this transaction won't find the invoice.
$resultInFirstTransaction = Invoices::find(
[
    'name'                   => 'second-transaction-invoice',
    Model::TRANSACTION_INDEX => $myTransaction2,
]
);

// this transaction will find the invoice.
$resultInSecondTransaction = Invoices::find(
[
    'name'                   => 'second-transaction-invoice',
    Model::TRANSACTION_INDEX => $myTransaction1,
]
);

// this transaction won't find the invoice.
$resultOutsideAnyExplicitTransaction = Invoices::find(
[
    'name' => 'second-transaction-invoice',
]
);

$transaction1->rollback();
$transaction2->rollback();
```

<h4 id="mvcmodel-findfirst"><code>findFirst()</code></h4>

```php
public static function findFirst( mixed $parameters = null ): mixed|null;
```

Query the first record that matches the specified conditions

```php
// What's the first invoice in invoices table?
$invoice = Invoices::findFirst();

echo "The invoice name is ", $invoice->inv_title;

// What's the first paid invoice in invoices table?
$invoice = Invoices::findFirst(
"inv_status_flag = 1"
);

echo "The first paid invoice name is ", $invoice->inv_title;

// Get first virtual invoice ordered by name
$invoice = Invoices::findFirst(
[
    "type = 'virtual'",
    "order" => "name",
]
);

echo "The first virtual invoice name is ", $invoice->inv_title;

// behavior with transaction
$myTransaction = new Transaction(\Phalcon\Di\Di::getDefault());
$myTransaction->begin();

$newInvoices = new Invoices();
$newInvoices->setTransaction($myTransaction);
$newInvoices->assign(
[
    'name' => 'test',
    'type' => 'mechanical',
    'year' => 1944,
]
);
$newInvoices->save();

$findsAInvoices = Invoices::findFirst(
[
    'name'                   => 'test',
    Model::TRANSACTION_INDEX => $myTransaction,
]
);

$doesNotFindAInvoices = Invoices::findFirst(
[
    'name' => 'test',
]
);

var_dump($findAInvoices);
var_dump($doesNotFindAInvoices);

$transaction->commit();

$doesFindTheInvoicesNow = Invoices::findFirst(
[
    'name' => 'test',
]
);
```

<h4 id="mvcmodel-fireevent"><code>fireEvent()</code></h4>

```php
public function fireEvent( string $eventName ): bool;
```

Fires an event, implicitly calls behaviors and listeners in the events
manager are notified

<h4 id="mvcmodel-fireeventcancel"><code>fireEventCancel()</code></h4>

```php
public function fireEventCancel( string $eventName ): bool;
```

Fires an event, implicitly calls behaviors and listeners in the events
manager are notified
This method stops if one of the callbacks/listeners returns bool false

<h4 id="mvcmodel-getchangedfields"><code>getChangedFields()</code></h4>

```php
public function getChangedFields(): array;
```

Returns a list of changed values.

```php
$invoices = Invoices::findFirst();
print_r($invoices->getChangedFields()); // []

$invoices->deleted = 'Y';

$invoices->getChangedFields();
print_r($invoices->getChangedFields()); // ["deleted"]
```

<h4 id="mvcmodel-getdirtystate"><code>getDirtyState()</code></h4>

```php
public function getDirtyState(): int;
```

Returns one of the DIRTY_STATE_* constants telling if the record exists
in the database or not

<h4 id="mvcmodel-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): EventsManagerInterface|null;
```

Returns the custom events manager or null if there is no custom events manager

<h4 id="mvcmodel-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages( mixed $filter = null ): MessageInterface[];
```

Returns array of validation messages

```php
$invoice = new Invoices();

$invoice->inv_status_flag = "mechanical";
$invoice->inv_title = "Test Invoice";
$invoice->inv_total = 1952;

if ($invoice->save() === false) {
echo "Umh, We can't store invoices right now ";

$messages = $invoice->getMessages();

foreach ($messages as $message) {
    echo $message;
}
} else {
echo "Great, a new invoice was saved successfully!";
}
```

<h4 id="mvcmodel-getmodelsmanager"><code>getModelsManager()</code></h4>

```php
public function getModelsManager(): ManagerInterface;
```

Returns the models manager related to the entity instance

<h4 id="mvcmodel-getmodelsmetadata"><code>getModelsMetaData()</code></h4>

```php
public function getModelsMetaData(): MetaDataInterface;
```

\{@inheritdoc\}

<h4 id="mvcmodel-getoldsnapshotdata"><code>getOldSnapshotData()</code></h4>

```php
public function getOldSnapshotData(): array;
```

Returns the internal old snapshot data

<h4 id="mvcmodel-getoperationmade"><code>getOperationMade()</code></h4>

```php
public function getOperationMade(): int;
```

Returns the type of the latest operation performed by the ORM
Returns one of the OP_* class constants

<h4 id="mvcmodel-getreadconnection"><code>getReadConnection()</code></h4>

```php
final public function getReadConnection(): AdapterInterface;
```

Gets the connection used to read data for the model

<h4 id="mvcmodel-getreadconnectionservice"><code>getReadConnectionService()</code></h4>

```php
final public function getReadConnectionService(): string;
```

Returns the DependencyInjection connection service name used to read data
related the model

<h4 id="mvcmodel-getrelated"><code>getRelated()</code></h4>

```php
public function getRelated(
string $alias,
mixed $arguments = null
);
```

Returns related records based on defined relations

<h4 id="mvcmodel-getschema"><code>getSchema()</code></h4>

```php
final public function getSchema(): string|null;
```

Returns schema name where the mapped table is located

<h4 id="mvcmodel-getsnapshotdata"><code>getSnapshotData()</code></h4>

```php
public function getSnapshotData(): array;
```

Returns the internal snapshot data

<h4 id="mvcmodel-getsource"><code>getSource()</code></h4>

```php
final public function getSource(): string;
```

Returns the table name mapped in the model

<h4 id="mvcmodel-gettransaction"><code>getTransaction()</code></h4>

```php
public function getTransaction(): TransactionInterface|null;
```

<h4 id="mvcmodel-getupdatedfields"><code>getUpdatedFields()</code></h4>

```php
public function getUpdatedFields(): array;
```

Returns a list of updated values.

```php
$invoices = Invoices::findFirst();
print_r($invoices->getChangedFields()); // []

$invoices->deleted = 'Y';

$invoices->getChangedFields();
print_r($invoices->getChangedFields()); // ["deleted"]
$invoices->save();
print_r($invoices->getChangedFields()); // []
print_r($invoices->getUpdatedFields()); // ["deleted"]
```

<h4 id="mvcmodel-getwriteconnection"><code>getWriteConnection()</code></h4>

```php
final public function getWriteConnection(): AdapterInterface;
```

Gets the connection used to write data to the model

<h4 id="mvcmodel-getwriteconnectionservice"><code>getWriteConnectionService()</code></h4>

```php
final public function getWriteConnectionService(): string;
```

Returns the DependencyInjection connection service name used to write
data related to the model

<h4 id="mvcmodel-haschanged"><code>hasChanged()</code></h4>

```php
public function hasChanged(
mixed $fieldName = null,
bool $allFields = false
): bool;
```

Check if a specific attribute has changed
This only works if the model is keeping data snapshots

```php
$invoice = new Invoices();

$invoice->inv_status_flag = "mechanical";
$invoice->inv_title = "Test Invoice";
$invoice->inv_total = 1952;

$invoice->create();

$invoice->inv_status_flag = "hydraulic";

$hasChanged = $invoice->hasChanged("type"); // returns true
$hasChanged = $invoice->hasChanged(["type", "name"]); // returns true
$hasChanged = $invoice->hasChanged(["type", "name"], true); // returns false
```

<h4 id="mvcmodel-hassnapshotdata"><code>hasSnapshotData()</code></h4>

```php
public function hasSnapshotData(): bool;
```

Checks if the object has internal snapshot data

<h4 id="mvcmodel-hasupdated"><code>hasUpdated()</code></h4>

```php
public function hasUpdated(
mixed $fieldName = null,
bool $allFields = false
): bool;
```

Check if a specific attribute was updated
This only works if the model is keeping data snapshots

<h4 id="mvcmodel-isrelationshiploaded"><code>isRelationshipLoaded()</code></h4>

```php
public function isRelationshipLoaded( string $relationshipAlias ): bool;
```

Checks if saved related records have already been loaded.

Only returns true if the records were previously fetched
through the model without any additional parameters.

```php
$invoice = Invoices::findFirst();
var_dump($invoice->isRelationshipLoaded('ordersProducts')); // false

$invoicesParts = $invoice->getOrdersProducts(['id > 0']);
var_dump($invoice->isRelationshipLoaded('ordersProducts')); // false

$invoicesParts = $invoice->getOrdersProducts(); // or $invoice->ordersProducts
var_dump($invoice->isRelationshipLoaded('ordersProducts')); // true

$invoice->ordersProducts = [new OrdersProducts()];
var_dump($invoice->isRelationshipLoaded('ordersProducts')); // false
```

<h4 id="mvcmodel-jsonserialize"><code>jsonSerialize()</code></h4>

```php
public function jsonSerialize(): array;
```

Serializes the object for json_encode

```php
echo json_encode($invoice);
```

<h4 id="mvcmodel-maximum"><code>maximum()</code></h4>

```php
public static function maximum( mixed $parameters = null ): mixed;
```

Returns the maximum value of a column for a result-set of rows that match
the specified conditions

```php
// What is the maximum invoice id?
$id = Invoices::maximum(
[
    "column" => "id",
]
);

echo "The maximum invoice id is: ", $id, "\n";

// What is the maximum id of paid invoices?
$sum = Invoices::maximum(
[
    "inv_status_flag = 1",
    "column" => "id",
]
);

echo "The maximum invoice id of paid invoices is ", $id, "\n";
```

<h4 id="mvcmodel-minimum"><code>minimum()</code></h4>

```php
public static function minimum( mixed $parameters = null ): mixed;
```

Returns the minimum value of a column for a result-set of rows that match
the specified conditions

```php
// What is the minimum invoice id?
$id = Invoices::minimum(
[
    "column" => "id",
]
);

echo "The minimum invoice id is: ", $id;

// What is the minimum id of paid invoices?
$sum = Invoices::minimum(
[
    "inv_status_flag = 1",
    "column" => "id",
]
);

echo "The minimum invoice id of paid invoices is ", $id;
```

<h4 id="mvcmodel-query"><code>query()</code></h4>

```php
public static function query( DiInterface|null $container = null ): CriteriaInterface;
```

Create a criteria for a specific model

<h4 id="mvcmodel-readattribute"><code>readAttribute()</code></h4>

```php
public function readAttribute( string $attribute ): mixed|null;
```

Reads an attribute value by its name

```php
echo $invoice->readAttribute("name");
```

<h4 id="mvcmodel-refresh"><code>refresh()</code></h4>

```php
public function refresh(): ModelInterface;
```

Refreshes the model attributes re-querying the record from the database

<h4 id="mvcmodel-save"><code>save()</code></h4>

```php
public function save(): bool;
```

Inserts or updates a model instance. Returning true on success or false
otherwise.

```php
// Creating a new invoice
$invoice = new Invoices();

$invoice->inv_status_flag = "mechanical";
$invoice->inv_title = "Test Invoice";
$invoice->inv_total = 1952;

$invoice->save();

// Updating an invoice name
$invoice = Invoices::findFirst("id = 100");

$invoice->inv_title = "Biomass";

$invoice->save();
```

<h4 id="mvcmodel-serialize"><code>serialize()</code></h4>

```php
public function serialize(): string|null;
```

Serializes the object ignoring connections, services, related objects or
static properties

<h4 id="mvcmodel-setconnectionservice"><code>setConnectionService()</code></h4>

```php
final public function setConnectionService( string $connectionService ): void;
```

Sets the DependencyInjection connection service name

<h4 id="mvcmodel-setdirtystate"><code>setDirtyState()</code></h4>

```php
public function setDirtyState( int $dirtyState ): ModelInterface|bool;
```

Sets the dirty state of the object using one of the DIRTY_STATE_* constants

<h4 id="mvcmodel-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( EventsManagerInterface $eventsManager );
```

Sets a custom events manager

<h4 id="mvcmodel-setoldsnapshotdata"><code>setOldSnapshotData()</code></h4>

```php
public function setOldSnapshotData(
array $data,
mixed $columnMap = null
);
```

Sets the record's old snapshot data.
This method is used internally to set old snapshot data when the model
was set up to keep snapshot data

<h4 id="mvcmodel-setreadconnectionservice"><code>setReadConnectionService()</code></h4>

```php
final public function setReadConnectionService( string $connectionService ): void;
```

Sets the DependencyInjection connection service name used to read data

<h4 id="mvcmodel-setrelated"><code>setRelated()</code></h4>

```php
public function setRelated(
string $alias,
mixed $records
): ModelInterface;
```

Stores related records in the relation cache, so that a subsequent
getRelated() or property access returns them without querying.

This is the write side of the cache getRelated() already reads. It does
not mark the record dirty: the value lands in `related`, never in
`dirtyRelated`, so save() is unaffected.

<h4 id="mvcmodel-setsnapshotdata"><code>setSnapshotData()</code></h4>

```php
public function setSnapshotData(
array $data,
mixed $columnMap = null
): void;
```

Sets the record's snapshot data.
This method is used internally to set snapshot data when the model was
set up to keep snapshot data

<h4 id="mvcmodel-setsync"><code>setSync()</code></h4>

```php
public function setSync(
mixed $elements = null,
bool $enabled = true
): ModelInterface;
```

Marks one or more many-to-many relationships to be synchronized (or not)
on the next save() call, overriding the relation's `sync` option for that
save only. The flag is cleared after save().

When syncing is enabled, intermediate rows for related records no longer
present in the assigned array are deleted.

```php
// Sync only the "tags" relationship on this save
$post->setSync("tags")->save();

// Sync every many-to-many relationship on this save
$post->setSync()->save();

// Disable syncing for every relationship on this save
$post->setSync("*", false)->save();

// Disable syncing for specific relationships on this save
$post->setSync(["tags", "categories"], false)->save();
```

<h4 id="mvcmodel-settransaction"><code>setTransaction()</code></h4>

```php
public function setTransaction( TransactionInterface $transaction ): ModelInterface;
```

Sets a transaction related to the Model instance

```php
use Phalcon\Mvc\Model\Transaction\Manager as TxManager;
use Phalcon\Mvc\Model\Transaction\Failed as TxFailed;

try {
$txManager = new TxManager();

$transaction = $txManager->get();

$invoice = new Invoices();

$invoice->setTransaction($transaction);

$invoice->inv_title       = "WALL·E";
$invoice->created_at = date("Y-m-d");

if ($invoice->save() === false) {
    $transaction->rollback("Can't save invoice");
}

$invoicePart = new OrdersProducts();

$invoicePart->setTransaction($transaction);

$invoicePart->type = "head";

if ($invoicePart->save() === false) {
    $transaction->rollback("Invoices part cannot be saved");
}

$transaction->commit();
} catch (TxFailed $e) {
echo "Failed, reason: ", $e->getMessage();
}
```

<h4 id="mvcmodel-setwriteconnectionservice"><code>setWriteConnectionService()</code></h4>

```php
final public function setWriteConnectionService( string $connectionService ): void;
```

Sets the DependencyInjection connection service name used to write data

<h4 id="mvcmodel-setup"><code>setup()</code></h4>

```php
public static function setup( array $options ): void;
```

Enables/disables options in the ORM.

The options are written to process-global `Phalcon\Support\Settings`
(`orm.*` flags) and therefore affect every model in the process at once.
Call this once during bootstrap; it is not per-model or per-container
configuration, and one application's `setup()` reconfigures the ORM for
every other user in the same process.

<h4 id="mvcmodel-skipoperation"><code>skipOperation()</code></h4>

```php
public function skipOperation( bool $skip ): void;
```

Skips the current operation forcing a success state

<h4 id="mvcmodel-sum"><code>sum()</code></h4>

```php
public static function sum( mixed $parameters = null ): float|ResultsetInterface;
```

Calculates the sum on a column for a result-set of rows that match the
specified conditions

```php
// How much are all invoices?
$sum = Invoices::sum(
[
    "column" => "inv_total",
]
);

echo "The total price of invoices is ", $sum, "\n";

// How much are paid invoices?
$sum = Invoices::sum(
[
    "inv_status_flag = 1",
    "column" => "inv_total",
]
);

echo "The total price of paid invoices is  ", $sum, "\n";
```

<h4 id="mvcmodel-toarray"><code>toArray()</code></h4>

```php
public function toArray(
mixed $columns = null,
mixed $useGetter = true
): array;
```

Returns the instance as an array representation

```php
print_r(
$invoice->toArray()
);
```

<h4 id="mvcmodel-unserialize"><code>unserialize()</code></h4>

```php
public function unserialize( string $data ): void;
```

Unserializes the object from a serialized string

<h4 id="mvcmodel-update"><code>update()</code></h4>

```php
public function update(): bool;
```

Updates a model instance. If the instance does not exist in the
persistence it will throw an exception. Returning `true` on success or
`false` otherwise.

```php
<?php

use MyApp\Models\Invoices;

$invoice = Invoices::findFirst('inv_id = 4');

$invoice->inv_total = 120;

$invoice->update();
```

:::warning[NOTE]
When retrieving the record with `findFirst()`, you need to get the full
object back (no `columns` definition) but also retrieve it using the
primary key. If not, the ORM will issue an `INSERT` instead of `UPDATE`.
:::

<h4 id="mvcmodel-validationhasfailed"><code>validationHasFailed()</code></h4>

```php
public function validationHasFailed(): bool;
```

Check whether validation process has generated any messages

```php
use Phalcon\Mvc\Model;
use Phalcon\Filter\Validation;
use Phalcon\Filter\Validation\Validator\ExclusionIn;

class Subscriptors extends Model
{
public function validation()
{
    $validator = new Validation();

    $validator->validate(
        "status",
        new ExclusionIn(
            [
                "domain" => [
                    "A",
                    "I",
                ],
            ]
        )
    );

    return $this->validate($validator);
}
}
```

<h4 id="mvcmodel-writeattribute"><code>writeAttribute()</code></h4>

```php
public function writeAttribute(
string $attribute,
mixed $value
): void;
```

Writes an attribute value by its name

```php
$invoice->writeAttribute("name", "Rosey");
```

<div class="api-group">Protected · 30</div>

<h4 id="mvcmodel-allowemptystringvalues"><code>allowEmptyStringValues()</code></h4>

```php
protected function allowEmptyStringValues( array $attributes ): void;
```

Sets a list of attributes that must be skipped from the
generated UPDATE statement

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    $this->allowEmptyStringValues(
        [
            "name",
        ]
    );
}
}
```

<h4 id="mvcmodel-belongsto"><code>belongsTo()</code></h4>

```php
protected function belongsTo(
mixed $fields,
string $referenceModel,
mixed $referencedFields,
array $options = []
): Relation;
```

Setup a reverse 1-1 or n-1 relation between two models

```php
class OrdersProducts extends \Phalcon\Mvc\Model
{
public function initialize()
{
    $this->belongsTo(
        "oxp_ord_id",
        Invoices::class,
        "id"
    );
}
}
```

<h4 id="mvcmodel-canceloperation"><code>cancelOperation()</code></h4>

```php
protected function cancelOperation();
```

Cancel the current operation

<h4 id="mvcmodel-checkforeignkeysrestrict"><code>checkForeignKeysRestrict()</code></h4>

```php
final protected function checkForeignKeysRestrict(): bool;
```

Reads "belongs to" relations and check the virtual foreign keys when
inserting or updating records to verify that inserted/updated values are
present in the related entity

<h4 id="mvcmodel-checkforeignkeysreversecascade"><code>checkForeignKeysReverseCascade()</code></h4>

```php
final protected function checkForeignKeysReverseCascade(): bool;
```

Reads both "hasMany" and "hasOne" relations and checks the virtual
foreign keys (cascade) when deleting records

<h4 id="mvcmodel-checkforeignkeysreverserestrict"><code>checkForeignKeysReverseRestrict()</code></h4>

```php
final protected function checkForeignKeysReverseRestrict(): bool;
```

Reads both "hasMany" and "hasOne" relations and checks the virtual
foreign keys (restrict) when deleting records

<h4 id="mvcmodel-collectrelatedtosave"><code>collectRelatedToSave()</code></h4>

```php
protected function collectRelatedToSave(): array;
```

Collects previously queried (belongs-to, has-one and has-one-through)
related records along with freshly added one

<h4 id="mvcmodel-dolowinsert"><code>doLowInsert()</code></h4>

```php
protected function doLowInsert(
MetaDataInterface $metaData,
AdapterInterface $connection,
mixed $table,
mixed $identityField
): bool;
```

Sends a pre-build INSERT SQL statement to the relational database system

<h4 id="mvcmodel-dolowupdate"><code>doLowUpdate()</code></h4>

```php
protected function doLowUpdate(
MetaDataInterface $metaData,
AdapterInterface $connection,
mixed $table
): bool;
```

Sends a pre-build UPDATE SQL statement to the relational database system

<h4 id="mvcmodel-getrelatedrecords"><code>getRelatedRecords()</code></h4>

```php
protected function getRelatedRecords(
string $modelName,
string $method,
array $arguments
);
```

Returns related records defined relations depending on the method name.
Returns false if the relation is non-existent.

<h4 id="mvcmodel-groupresult"><code>groupResult()</code></h4>

```php
protected static function groupResult(
string $functionName,
string $alias,
mixed $parameters = null
): mixed;
```

Generate a PHQL SELECT statement for an aggregate

<h4 id="mvcmodel-has"><code>has()</code></h4>

```php
protected function has(
MetaDataInterface $metaData,
AdapterInterface $connection
): bool;
```

Checks whether the current record already exists

<h4 id="mvcmodel-hasmany"><code>hasMany()</code></h4>

```php
protected function hasMany(
mixed $fields,
string $referenceModel,
mixed $referencedFields,
array $options = []
): Relation;
```

Setup a 1-n relation between two models

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    $this->hasMany(
        "id",
        OrdersProducts::class,
        "oxp_ord_id"
    );
}
}
```

<h4 id="mvcmodel-hasmanytomany"><code>hasManyToMany()</code></h4>

```php
protected function hasManyToMany(
mixed $fields,
string $intermediateModel,
mixed $intermediateFields,
mixed $intermediateReferencedFields,
string $referenceModel,
mixed $referencedFields,
array $options = []
): Relation;
```

Setup an n-n relation between two models, through an intermediate
relation

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    // Setup a many-to-many relation to Parts through OrdersProducts
    $this->hasManyToMany(
        "id",
        OrdersProducts::class,
        "oxp_ord_id",
        "oxp_prd_id",
        Products::class,
        "id",
    );
}
}
```

<h4 id="mvcmodel-hasone"><code>hasOne()</code></h4>

```php
protected function hasOne(
mixed $fields,
string $referenceModel,
mixed $referencedFields,
array $options = []
): Relation;
```

Setup a 1-1 relation between two models

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    $this->hasOne(
        "id",
        InvoicesDescription::class,
        "oxp_ord_id"
    );
}
}
```

<h4 id="mvcmodel-hasonethrough"><code>hasOneThrough()</code></h4>

```php
protected function hasOneThrough(
mixed $fields,
string $intermediateModel,
mixed $intermediateFields,
mixed $intermediateReferencedFields,
string $referenceModel,
mixed $referencedFields,
array $options = []
): Relation;
```

Setup a 1-1 relation between two models, through an intermediate
relation

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    // Setup a 1-1 relation to one item from Parts through OrdersProducts
    $this->hasOneThrough(
        "id",
        OrdersProducts::class,
        "oxp_ord_id",
        "oxp_prd_id",
        Products::class,
        "id",
    );
}
}
```

<h4 id="mvcmodel-invokefinder"><code>invokeFinder()</code></h4>

```php
protected final static function invokeFinder(
string $method,
array $arguments
);
```

Try to check if the query must invoke a finder

<h4 id="mvcmodel-keepsnapshots"><code>keepSnapshots()</code></h4>

```php
protected function keepSnapshots( bool $keepSnapshot ): void;
```

Sets if the model must keep the original record snapshot in memory

```php
use Phalcon\Mvc\Model;

class Invoices extends Model
{
public function initialize()
{
    $this->keepSnapshots(true);
}
}
```

<h4 id="mvcmodel-possiblesetter"><code>possibleSetter()</code></h4>

```php
final protected function possibleSetter(
string $property,
mixed $value
): bool;
```

Check for, and attempt to use, possible setter.

<h4 id="mvcmodel-postsave"><code>postSave()</code></h4>

```php
protected function postSave(
bool $success,
bool $exists
): bool;
```

Executes internal events after save a record

<h4 id="mvcmodel-postsaverelatedrecords"><code>postSaveRelatedRecords()</code></h4>

```php
protected function postSaveRelatedRecords(
AdapterInterface $connection,
mixed $related,
CollectionInterface $visited
): bool;
```

Save the related records assigned in the has-one/has-many relations

<h4 id="mvcmodel-presave"><code>preSave()</code></h4>

```php
protected function preSave(
MetaDataInterface $metaData,
bool $exists,
mixed $identityField
): bool;
```

Executes internal hooks before save a record

<h4 id="mvcmodel-presaverelatedrecords"><code>preSaveRelatedRecords()</code></h4>

```php
protected function preSaveRelatedRecords(
AdapterInterface $connection,
mixed $related,
CollectionInterface $visited
): bool;
```

Saves related records that must be stored prior to save the master record

<h4 id="mvcmodel-setschema"><code>setSchema()</code></h4>

```php
final protected function setSchema( string $schema ): ModelInterface;
```

Sets schema name where the mapped table is located

<h4 id="mvcmodel-setsource"><code>setSource()</code></h4>

```php
final protected function setSource( string $source ): ModelInterface;
```

Sets the table name to which model should be mapped

<h4 id="mvcmodel-skipattributes"><code>skipAttributes()</code></h4>

```php
protected function skipAttributes( array $attributes ): void;
```

Sets a list of attributes that must be skipped from the
generated INSERT/UPDATE statement

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    $this->skipAttributes(
        [
            "price",
        ]
    );
}
}
```

<h4 id="mvcmodel-skipattributesoncreate"><code>skipAttributesOnCreate()</code></h4>

```php
protected function skipAttributesOnCreate( array $attributes ): void;
```

Sets a list of attributes that must be skipped from the
generated INSERT statement

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    $this->skipAttributesOnCreate(
        [
            "created_at",
        ]
    );
}
}
```

<h4 id="mvcmodel-skipattributesonupdate"><code>skipAttributesOnUpdate()</code></h4>

```php
protected function skipAttributesOnUpdate( array $attributes ): void;
```

Sets a list of attributes that must be skipped from the
generated UPDATE statement

```php
class Invoices extends \Phalcon\Mvc\Model
{
public function initialize()
{
    $this->skipAttributesOnUpdate(
        [
            "modified_in",
        ]
    );
}
}
```

<h4 id="mvcmodel-usedynamicupdate"><code>useDynamicUpdate()</code></h4>

```php
protected function useDynamicUpdate( bool $dynamicUpdate ): void;
```

Sets if a model must use dynamic update instead of the all-field update

```php
use Phalcon\Mvc\Model;

class Invoices extends Model
{
public function initialize()
{
    $this->useDynamicUpdate(true);
}
}
```

<h4 id="mvcmodel-validate"><code>validate()</code></h4>

```php
protected function validate( ValidationInterface $validator ): bool;
```

Executes validators on every validation call

```php
use Phalcon\Mvc\Model;
use Phalcon\Filter\Validation;
use Phalcon\Filter\Validation\Validator\ExclusionIn;

class Subscriptors extends Model
{
public function validation()
{
    $validator = new Validation();

    $validator->add(
        "status",
        new ExclusionIn(
            [
                "domain" => [
                    "A",
                    "I",
                ],
            ]
        )
    );

    return $this->validate($validator);
}
}
```

## Mvc\ModelInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/ModelInterface.zep">Source on GitHub</a>

Phalcon\Mvc\ModelInterface

Interface for Phalcon\Mvc\Model

@template T

<div class="api-tree">

- **`Phalcon\Mvc\ModelInterface`**

</div>

__Uses__ `Phalcon\Db\Adapter\AdapterInterface` · `Phalcon\Di\DiInterface` · `Phalcon\Messages\MessageInterface` · `Phalcon\Mvc\Model\CriteriaInterface` · `Phalcon\Mvc\Model\MetaDataInterface` · `Phalcon\Mvc\Model\ResultInterface` · `Phalcon\Mvc\Model\Resultset` · `Phalcon\Mvc\Model\ResultsetInterface` · `Phalcon\Mvc\Model\TransactionInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelinterface-appendmessage">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">appendMessage</span>( <span class="st">MessageInterface</span> <span class="sv">$message</span> )</code>
<span class="desc">Appends a customized message on the validation process</span>
</a>
<a class="api-item" href="#mvcmodelinterface-assign">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">assign</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$whiteList</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$dataColumnMap</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Assigns values to a model from an array</span>
</a>
<a class="api-item" href="#mvcmodelinterface-average">
<code class="vis vis-public">public</code>
<code class="ret">float|ResultsetInterface</code>
<code class="sig"><span class="sf">average</span>( <span class="st">array</span> <span class="sv">$parameters</span><span class="sm"> = []</span> )</code>
<span class="desc">Allows to calculate the average value on a column matching the specified</span>
</a>
<a class="api-item" href="#mvcmodelinterface-cloneresult">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">cloneResult</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$base</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$dirtyState</span><span class="sm"> = 0</span></span>)</code>
<span class="desc">Assigns values to a model from an array returning a new model</span>
</a>
<a class="api-item" href="#mvcmodelinterface-cloneresultmap">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">cloneResultMap</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$base</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$dirtyState</span><span class="sm"> = 0</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$keepSnapshots</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Assigns values to a model from an array returning a new model</span>
</a>
<a class="api-item" href="#mvcmodelinterface-cloneresultmaphydrate">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">cloneResultMapHydrate</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$hydrationMode</span></span>)</code>
<span class="desc">Returns an hydrated result based on the data and the column map</span>
</a>
<a class="api-item" href="#mvcmodelinterface-count">
<code class="vis vis-public">public</code>
<code class="ret">int|ResultsetInterface</code>
<code class="sig"><span class="sf">count</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Allows to count how many records match the specified conditions</span>
</a>
<a class="api-item" href="#mvcmodelinterface-create">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">create</span>()</code>
<span class="desc">Inserts a model instance. If the instance already exists in the</span>
</a>
<a class="api-item" href="#mvcmodelinterface-delete">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">delete</span>()</code>
<span class="desc">Deletes a model instance. Returning true on success or false otherwise.</span>
</a>
<a class="api-item" href="#mvcmodelinterface-find">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">find</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Allows to query a set of records that match the specified conditions.</span>
</a>
<a class="api-item" href="#mvcmodelinterface-findfirst">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">findFirst</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Allows to query the first record that match the specified conditions</span>
</a>
<a class="api-item" href="#mvcmodelinterface-fireevent">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">fireEvent</span>( <span class="st">string</span> <span class="sv">$eventName</span> )</code>
<span class="desc">Fires an event, implicitly calls behaviors and listeners in the events</span>
</a>
<a class="api-item" href="#mvcmodelinterface-fireeventcancel">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">fireEventCancel</span>( <span class="st">string</span> <span class="sv">$eventName</span> )</code>
<span class="desc">Fires an event, implicitly calls behaviors and listeners in the events</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getdirtystate">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getDirtyState</span>()</code>
<span class="desc">Returns one of the DIRTY_STATE_* constants telling if the record exists</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">MessageInterface[]</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns array of validation messages</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getmodelsmetadata">
<code class="vis vis-public">public</code>
<code class="ret">MetaDataInterface</code>
<code class="sig"><span class="sf">getModelsMetaData</span>()</code>
<span class="desc">Returns the models meta-data service related to the entity instance.</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getoperationmade">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getOperationMade</span>()</code>
<span class="desc">Returns the type of the latest operation performed by the ORM</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getreadconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getReadConnection</span>()</code>
<span class="desc">Gets internal database connection</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getReadConnectionService</span>()</code>
<span class="desc">Returns DependencyInjection connection service used to read data</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getrelated">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getRelated</span>(<span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$arguments</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Returns related records based on defined relations</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getschema">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getSchema</span>()</code>
<span class="desc">Returns schema name where table mapped is located</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getsource">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getSource</span>()</code>
<span class="desc">Returns table name mapped in the model</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getwriteconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getWriteConnection</span>()</code>
<span class="desc">Gets internal database connection</span>
</a>
<a class="api-item" href="#mvcmodelinterface-getwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getWriteConnectionService</span>()</code>
<span class="desc">Returns DependencyInjection connection service used to write data</span>
</a>
<a class="api-item" href="#mvcmodelinterface-maximum">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">maximum</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Allows to get the maximum value of a column that match the specified</span>
</a>
<a class="api-item" href="#mvcmodelinterface-minimum">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">minimum</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Allows to get the minimum value of a column that match the specified</span>
</a>
<a class="api-item" href="#mvcmodelinterface-query">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">query</span>( <span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span> )</code>
<span class="desc">Create a criteria for a specific model</span>
</a>
<a class="api-item" href="#mvcmodelinterface-refresh">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">refresh</span>()</code>
<span class="desc">Refreshes the model attributes re-querying the record from the database</span>
</a>
<a class="api-item" href="#mvcmodelinterface-save">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">save</span>()</code>
<span class="desc">Inserts or updates a model instance. Returning true on success or false</span>
</a>
<a class="api-item" href="#mvcmodelinterface-setconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setConnectionService</span>( <span class="st">string</span> <span class="sv">$connectionService</span> )</code>
<span class="desc">Sets both read/write connection services</span>
</a>
<a class="api-item" href="#mvcmodelinterface-setdirtystate">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|bool</code>
<code class="sig"><span class="sf">setDirtyState</span>( <span class="st">int</span> <span class="sv">$dirtyState</span> )</code>
<span class="desc">Sets the dirty state of the object using one of the DIRTY_STATE_*</span>
</a>
<a class="api-item" href="#mvcmodelinterface-setreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setReadConnectionService</span>( <span class="st">string</span> <span class="sv">$connectionService</span> )</code>
<span class="desc">Sets the DependencyInjection connection service used to read data</span>
</a>
<a class="api-item" href="#mvcmodelinterface-setsnapshotdata">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setSnapshotData</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets the record&#039;s snapshot data. This method is used internally to set</span>
</a>
<a class="api-item" href="#mvcmodelinterface-setsync">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">setSync</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$elements</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$enabled</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Marks one or more many-to-many relationships to be synchronized (or not)</span>
</a>
<a class="api-item" href="#mvcmodelinterface-settransaction">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">setTransaction</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">Sets a transaction related to the Model instance</span>
</a>
<a class="api-item" href="#mvcmodelinterface-setwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setWriteConnectionService</span>( <span class="st">string</span> <span class="sv">$connectionService</span> )</code>
<span class="desc">Sets the DependencyInjection connection service used to write data</span>
</a>
<a class="api-item" href="#mvcmodelinterface-skipoperation">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">skipOperation</span>( <span class="st">bool</span> <span class="sv">$skip</span> )</code>
<span class="desc">Skips the current operation forcing a success state</span>
</a>
<a class="api-item" href="#mvcmodelinterface-sum">
<code class="vis vis-public">public</code>
<code class="ret">float|ResultsetInterface</code>
<code class="sig"><span class="sf">sum</span>( <span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span> )</code>
<span class="desc">Allows to calculate a sum on a column that match the specified conditions</span>
</a>
<a class="api-item" href="#mvcmodelinterface-update">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">update</span>()</code>
<span class="desc">Updates a model instance. If the instance does not exist in the</span>
</a>
<a class="api-item" href="#mvcmodelinterface-validationhasfailed">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">validationHasFailed</span>()</code>
<span class="desc">Check whether validation process has generated any messages</span>
</a>
</div>

### Methods

<div class="api-group">Public · 40</div>

<h4 id="mvcmodelinterface-appendmessage"><code>appendMessage()</code></h4>

```php
public function appendMessage( MessageInterface $message ): ModelInterface;
```

Appends a customized message on the validation process

<h4 id="mvcmodelinterface-assign"><code>assign()</code></h4>

```php
public function assign(
array $data,
mixed $whiteList = null,
mixed $dataColumnMap = null
): ModelInterface;
```

Assigns values to a model from an array

<h4 id="mvcmodelinterface-average"><code>average()</code></h4>

```php
public static function average( array $parameters = [] ): float|ResultsetInterface;
```

Allows to calculate the average value on a column matching the specified
conditions

<h4 id="mvcmodelinterface-cloneresult"><code>cloneResult()</code></h4>

```php
public static function cloneResult(
ModelInterface $base,
array $data,
int $dirtyState = 0
): ModelInterface;
```

Assigns values to a model from an array returning a new model

<h4 id="mvcmodelinterface-cloneresultmap"><code>cloneResultMap()</code></h4>

```php
public static function cloneResultMap(
mixed $base,
array $data,
mixed $columnMap,
int $dirtyState = 0,
bool $keepSnapshots = false
): ModelInterface;
```

Assigns values to a model from an array returning a new model

<h4 id="mvcmodelinterface-cloneresultmaphydrate"><code>cloneResultMapHydrate()</code></h4>

```php
public static function cloneResultMapHydrate(
array $data,
mixed $columnMap,
int $hydrationMode
);
```

Returns an hydrated result based on the data and the column map

<h4 id="mvcmodelinterface-count"><code>count()</code></h4>

```php
public static function count( mixed $parameters = null ): int|ResultsetInterface;
```

Allows to count how many records match the specified conditions

Returns an integer for simple queries or a ResultsetInterface
instance for when the GROUP condition is used. The results will
contain the count of each group.

<h4 id="mvcmodelinterface-create"><code>create()</code></h4>

```php
public function create(): bool;
```

Inserts a model instance. If the instance already exists in the
persistence it will throw an exception. Returning true on success or
false otherwise.

<h4 id="mvcmodelinterface-delete"><code>delete()</code></h4>

```php
public function delete(): bool;
```

Deletes a model instance. Returning true on success or false otherwise.

<h4 id="mvcmodelinterface-find"><code>find()</code></h4>

```php
public static function find( mixed $parameters = null );
```

Allows to query a set of records that match the specified conditions.

This is one of four ways to express a query against a model, each with an
intended lane:

- find-parameter arrays (this method) for simple lookups;
- `Phalcon\Mvc\Model\Query\Builder` as the canonical programmatic API;
- `Phalcon\Mvc\Model\Criteria` as request-bound convenience;
- raw PHQL via `Phalcon\Mvc\Model\Query` for everything else.

<h4 id="mvcmodelinterface-findfirst"><code>findFirst()</code></h4>

```php
public static function findFirst( mixed $parameters = null ): mixed|null;
```

Allows to query the first record that match the specified conditions

TODO: Current method signature must be reviewed in v5. As it must return only ?ModelInterface (it also returns Row).
@see https://github.com/phalcon/cphalcon/issues/15212
@see https://github.com/phalcon/cphalcon/issues/15883

<h4 id="mvcmodelinterface-fireevent"><code>fireEvent()</code></h4>

```php
public function fireEvent( string $eventName ): bool;
```

Fires an event, implicitly calls behaviors and listeners in the events
manager are notified

<h4 id="mvcmodelinterface-fireeventcancel"><code>fireEventCancel()</code></h4>

```php
public function fireEventCancel( string $eventName ): bool;
```

Fires an event, implicitly calls behaviors and listeners in the events
manager are notified. This method stops if one of the callbacks/listeners
returns bool false

<h4 id="mvcmodelinterface-getdirtystate"><code>getDirtyState()</code></h4>

```php
public function getDirtyState(): int;
```

Returns one of the DIRTY_STATE_* constants telling if the record exists
in the database or not

<h4 id="mvcmodelinterface-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): MessageInterface[];
```

Returns array of validation messages

<h4 id="mvcmodelinterface-getmodelsmetadata"><code>getModelsMetaData()</code></h4>

```php
public function getModelsMetaData(): MetaDataInterface;
```

Returns the models meta-data service related to the entity instance.

<h4 id="mvcmodelinterface-getoperationmade"><code>getOperationMade()</code></h4>

```php
public function getOperationMade(): int;
```

Returns the type of the latest operation performed by the ORM
Returns one of the OP_* class constants

<h4 id="mvcmodelinterface-getreadconnection"><code>getReadConnection()</code></h4>

```php
public function getReadConnection(): AdapterInterface;
```

Gets internal database connection

<h4 id="mvcmodelinterface-getreadconnectionservice"><code>getReadConnectionService()</code></h4>

```php
public function getReadConnectionService(): string;
```

Returns DependencyInjection connection service used to read data

<h4 id="mvcmodelinterface-getrelated"><code>getRelated()</code></h4>

```php
public function getRelated(
string $alias,
mixed $arguments = null
);
```

Returns related records based on defined relations

<h4 id="mvcmodelinterface-getschema"><code>getSchema()</code></h4>

```php
public function getSchema(): string|null;
```

Returns schema name where table mapped is located

<h4 id="mvcmodelinterface-getsource"><code>getSource()</code></h4>

```php
public function getSource(): string;
```

Returns table name mapped in the model

<h4 id="mvcmodelinterface-getwriteconnection"><code>getWriteConnection()</code></h4>

```php
public function getWriteConnection(): AdapterInterface;
```

Gets internal database connection

<h4 id="mvcmodelinterface-getwriteconnectionservice"><code>getWriteConnectionService()</code></h4>

```php
public function getWriteConnectionService(): string;
```

Returns DependencyInjection connection service used to write data

<h4 id="mvcmodelinterface-maximum"><code>maximum()</code></h4>

```php
public static function maximum( mixed $parameters = null ): mixed;
```

Allows to get the maximum value of a column that match the specified
conditions

<h4 id="mvcmodelinterface-minimum"><code>minimum()</code></h4>

```php
public static function minimum( mixed $parameters = null ): mixed;
```

Allows to get the minimum value of a column that match the specified
conditions

<h4 id="mvcmodelinterface-query"><code>query()</code></h4>

```php
public static function query( DiInterface|null $container = null ): CriteriaInterface;
```

Create a criteria for a specific model

<h4 id="mvcmodelinterface-refresh"><code>refresh()</code></h4>

```php
public function refresh(): ModelInterface;
```

Refreshes the model attributes re-querying the record from the database

<h4 id="mvcmodelinterface-save"><code>save()</code></h4>

```php
public function save(): bool;
```

Inserts or updates a model instance. Returning true on success or false
otherwise.

<h4 id="mvcmodelinterface-setconnectionservice"><code>setConnectionService()</code></h4>

```php
public function setConnectionService( string $connectionService ): void;
```

Sets both read/write connection services

<h4 id="mvcmodelinterface-setdirtystate"><code>setDirtyState()</code></h4>

```php
public function setDirtyState( int $dirtyState ): ModelInterface|bool;
```

Sets the dirty state of the object using one of the DIRTY_STATE_*
constants

<h4 id="mvcmodelinterface-setreadconnectionservice"><code>setReadConnectionService()</code></h4>

```php
public function setReadConnectionService( string $connectionService ): void;
```

Sets the DependencyInjection connection service used to read data

<h4 id="mvcmodelinterface-setsnapshotdata"><code>setSnapshotData()</code></h4>

```php
public function setSnapshotData(
array $data,
mixed $columnMap = null
): void;
```

Sets the record's snapshot data. This method is used internally to set
snapshot data when the model was set up to keep snapshot data

<h4 id="mvcmodelinterface-setsync"><code>setSync()</code></h4>

```php
public function setSync(
mixed $elements = null,
bool $enabled = true
): ModelInterface;
```

Marks one or more many-to-many relationships to be synchronized (or not)
on the next save() call.

<h4 id="mvcmodelinterface-settransaction"><code>setTransaction()</code></h4>

```php
public function setTransaction( TransactionInterface $transaction ): ModelInterface;
```

Sets a transaction related to the Model instance

<h4 id="mvcmodelinterface-setwriteconnectionservice"><code>setWriteConnectionService()</code></h4>

```php
public function setWriteConnectionService( string $connectionService ): void;
```

Sets the DependencyInjection connection service used to write data

<h4 id="mvcmodelinterface-skipoperation"><code>skipOperation()</code></h4>

```php
public function skipOperation( bool $skip ): void;
```

Skips the current operation forcing a success state

<h4 id="mvcmodelinterface-sum"><code>sum()</code></h4>

```php
public static function sum( mixed $parameters = null ): float|ResultsetInterface;
```

Allows to calculate a sum on a column that match the specified conditions

<h4 id="mvcmodelinterface-update"><code>update()</code></h4>

```php
public function update(): bool;
```

Updates a model instance. If the instance does not exist in the
persistence it will throw an exception. Returning true on success or
false otherwise.

<h4 id="mvcmodelinterface-validationhasfailed"><code>validationHasFailed()</code></h4>

```php
public function validationHasFailed(): bool;
```

Check whether validation process has generated any messages

## Mvc\Model\Behavior

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Behavior.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Behavior

This is an optional base class for ORM behaviors

<div class="api-tree">

- **`Phalcon\Mvc\Model\Behavior`** - implements [`Phalcon\Mvc\Model\BehaviorInterface`](#mvcmodelbehaviorinterface)
- [`Phalcon\Mvc\Model\Behavior\SoftDelete`](#mvcmodelbehaviorsoftdelete)
- [`Phalcon\Mvc\Model\Behavior\Timestampable`](#mvcmodelbehaviortimestampable)

</div>

__Uses__ `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbehavior-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span> )</code>
<span class="desc">Phalcon\Mvc\Model\Behavior</span>
</a>
<a class="api-item" href="#mvcmodelbehavior-missingmethod">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">missingMethod</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Acts as fallbacks when a missing method is called on the model</span>
</a>
<a class="api-item" href="#mvcmodelbehavior-notify">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">notify</span>(<span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span></span>)</code>
<span class="desc">This method receives the notifications from the EventsManager</span>
</a>
<a class="api-item" href="#mvcmodelbehavior-getoptions">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">getOptions</span>( <span class="st">string|null</span> <span class="sv">$eventName</span><span class="sm"> = null</span> )</code>
<span class="desc">Returns the behavior options related to an event</span>
</a>
<a class="api-item" href="#mvcmodelbehavior-musttakeaction">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">mustTakeAction</span>( <span class="st">string</span> <span class="sv">$eventName</span> )</code>
<span class="desc">Checks whether the behavior must take action on certain event</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$options</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="mvcmodelbehavior-__construct"><code>__construct()</code></h4>

```php
public function __construct( array $options = [] );
```

Phalcon\Mvc\Model\Behavior

<h4 id="mvcmodelbehavior-missingmethod"><code>missingMethod()</code></h4>

```php
public function missingMethod(
ModelInterface $model,
string $method,
array $arguments = []
);
```

Acts as fallbacks when a missing method is called on the model

<h4 id="mvcmodelbehavior-notify"><code>notify()</code></h4>

```php
public function notify(
string $type,
ModelInterface $model
);
```

This method receives the notifications from the EventsManager

<div class="api-group">Protected · 2</div>

<h4 id="mvcmodelbehavior-getoptions"><code>getOptions()</code></h4>

```php
protected function getOptions( string|null $eventName = null );
```

Returns the behavior options related to an event

<h4 id="mvcmodelbehavior-musttakeaction"><code>mustTakeAction()</code></h4>

```php
protected function mustTakeAction( string $eventName ): bool;
```

Checks whether the behavior must take action on certain event

## Mvc\Model\BehaviorInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/BehaviorInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\BehaviorInterface

Interface for Phalcon\Mvc\Model\Behavior

<div class="api-tree">

- **`Phalcon\Mvc\Model\BehaviorInterface`**

</div>

__Uses__ `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbehaviorinterface-missingmethod">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">missingMethod</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Calls a method when it&#039;s missing in the model</span>
</a>
<a class="api-item" href="#mvcmodelbehaviorinterface-notify">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">notify</span>(<span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span></span>)</code>
<span class="desc">This method receives the notifications from the EventsManager</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmodelbehaviorinterface-missingmethod"><code>missingMethod()</code></h4>

```php
public function missingMethod(
ModelInterface $model,
string $method,
array $arguments = []
);
```

Calls a method when it's missing in the model

<h4 id="mvcmodelbehaviorinterface-notify"><code>notify()</code></h4>

```php
public function notify(
string $type,
ModelInterface $model
);
```

This method receives the notifications from the EventsManager

## Mvc\Model\Behavior\Exceptions\MissingRequiredOption

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Behavior/Exceptions/MissingRequiredOption.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Behavior\Exceptions\MissingRequiredOption`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbehaviorexceptionsmissingrequiredoption-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$option</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelbehaviorexceptionsmissingrequiredoption-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $option );
```

## Mvc\Model\Behavior\SoftDelete

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Behavior/SoftDelete.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Behavior\SoftDelete

Instead of permanently delete a record it marks the record as deleted
changing the value of a flag column

<div class="api-tree">

- [`Phalcon\Mvc\Model\Behavior`](#mvcmodelbehavior)
- **`Phalcon\Mvc\Model\Behavior\SoftDelete`**

</div>

__Uses__ `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Behavior` · `Phalcon\Mvc\Model\Behavior\Exceptions\MissingRequiredOption` · `Phalcon\Mvc\Model\Exception` · `Phalcon\Support\Settings`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbehaviorsoftdelete-notify">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">notify</span>(<span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span></span>)</code>
<span class="desc">Listens for notifications from the models manager</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelbehaviorsoftdelete-notify"><code>notify()</code></h4>

```php
public function notify(
string $type,
ModelInterface $model
);
```

Listens for notifications from the models manager

## Mvc\Model\Behavior\Timestampable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Behavior/Timestampable.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Behavior\Timestampable

Allows to automatically update a model’s attribute saving the datetime when a
record is created or updated

<div class="api-tree">

- [`Phalcon\Mvc\Model\Behavior`](#mvcmodelbehavior)
- **`Phalcon\Mvc\Model\Behavior\Timestampable`**

</div>

__Uses__ `Closure` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Behavior` · `Phalcon\Mvc\Model\Behavior\Exceptions\MissingRequiredOption` · `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbehaviortimestampable-notify">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">notify</span>(<span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span></span>)</code>
<span class="desc">Listens for notifications from the models manager</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelbehaviortimestampable-notify"><code>notify()</code></h4>

```php
public function notify(
string $type,
ModelInterface $model
);
```

Listens for notifications from the models manager

## Mvc\Model\Binder

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Binder.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Binder

This is an class for binding models into params for handler

<div class="api-tree">

- **`Phalcon\Mvc\Model\Binder`** - implements [`Phalcon\Mvc\Model\BinderInterface`](#mvcmodelbinderinterface)

</div>

__Uses__ `Closure` · `Phalcon\Cache\Adapter\AdapterInterface` · `Phalcon\Mvc\Controller\BindModelInterface` · `Phalcon\Mvc\Model` · `Phalcon\Mvc\Model\Binder\BindableInterface` · `Phalcon\Mvc\Model\Exceptions\HandlerMustImplementBindable` · `Phalcon\Mvc\Model\Exceptions\InvalidGetModelNameReturn` · `Phalcon\Mvc\Model\Exceptions\MissingMethodName` · `Phalcon\Mvc\Model\Exceptions\MissingModelClassName` · `ReflectionFunction` · `ReflectionMethod` · `ReflectionNamedType`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbinder-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">AdapterInterface|null</span> <span class="sv">$cache</span><span class="sm"> = null</span> )</code>
<span class="desc">Phalcon\Mvc\Model\Binder constructor</span>
</a>
<a class="api-item" href="#mvcmodelbinder-bindtohandler">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">bindToHandler</span>(<span class="prm"><span class="st">object</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$cacheKey</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$methodName</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Bind models into params in proper handler</span>
</a>
<a class="api-item" href="#mvcmodelbinder-getboundmodels">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBoundModels</span>()</code>
<span class="desc">Return the active bound models</span>
</a>
<a class="api-item" href="#mvcmodelbinder-getcache">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getCache</span>()</code>
<span class="desc">Sets cache instance</span>
</a>
<a class="api-item" href="#mvcmodelbinder-getoriginalvalues">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOriginalValues</span>()</code>
<span class="desc">Return the array for original values</span>
</a>
<a class="api-item" href="#mvcmodelbinder-setcache">
<code class="vis vis-public">public</code>
<code class="ret">BinderInterface</code>
<code class="sig"><span class="sf">setCache</span>( <span class="st">AdapterInterface</span> <span class="sv">$cache</span> )</code>
<span class="desc">Gets cache instance</span>
</a>
<a class="api-item" href="#mvcmodelbinder-findboundmodel">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed|bool</code>
<code class="sig"><span class="sf">findBoundModel</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$paramValue</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
<span class="desc">Find the model by param value.</span>
</a>
<a class="api-item" href="#mvcmodelbinder-getparamsfromcache">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">getParamsFromCache</span>( <span class="st">string</span> <span class="sv">$cacheKey</span> )</code>
<span class="desc">Get params classes from cache by key</span>
</a>
<a class="api-item" href="#mvcmodelbinder-getparamsfromreflection">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getParamsFromReflection</span>(<span class="prm"><span class="st">object</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$cacheKey</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$methodName</span></span>)</code>
<span class="desc">Get modified params for handler using reflection</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$boundModels</span><span class="sm"> = []</span></code>
<span class="desc">Array for storing active bound models</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AdapterInterface|null</code>
<code class="sig"><span class="sv">$cache</span></code>
<span class="desc">Cache object used for caching parameters for model binding</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$internalCache</span><span class="sm"> = []</span></code>
<span class="desc">Internal cache for caching parameters for model binding during request</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$originalValues</span><span class="sm"> = []</span></code>
<span class="desc">Array for original values</span>
</div>
</div>

### Methods

<div class="api-group">Public · 6</div>

<h4 id="mvcmodelbinder-__construct"><code>__construct()</code></h4>

```php
public function __construct( AdapterInterface|null $cache = null );
```

Phalcon\Mvc\Model\Binder constructor

<h4 id="mvcmodelbinder-bindtohandler"><code>bindToHandler()</code></h4>

```php
public function bindToHandler(
object $handler,
array $params,
string $cacheKey,
string|null $methodName = null
): array;
```

Bind models into params in proper handler

<h4 id="mvcmodelbinder-getboundmodels"><code>getBoundModels()</code></h4>

```php
public function getBoundModels(): array;
```

Return the active bound models

<h4 id="mvcmodelbinder-getcache"><code>getCache()</code></h4>

```php
public function getCache(): AdapterInterface;
```

Sets cache instance

<h4 id="mvcmodelbinder-getoriginalvalues"><code>getOriginalValues()</code></h4>

```php
public function getOriginalValues(): array;
```

Return the array for original values

<h4 id="mvcmodelbinder-setcache"><code>setCache()</code></h4>

```php
public function setCache( AdapterInterface $cache ): BinderInterface;
```

Gets cache instance

<div class="api-group">Protected · 3</div>

<h4 id="mvcmodelbinder-findboundmodel"><code>findBoundModel()</code></h4>

```php
protected function findBoundModel(
mixed $paramValue,
string $className
): mixed|bool;
```

Find the model by param value.

<h4 id="mvcmodelbinder-getparamsfromcache"><code>getParamsFromCache()</code></h4>

```php
protected function getParamsFromCache( string $cacheKey ): array|null;
```

Get params classes from cache by key

<h4 id="mvcmodelbinder-getparamsfromreflection"><code>getParamsFromReflection()</code></h4>

```php
protected function getParamsFromReflection(
object $handler,
array $params,
string $cacheKey,
string $methodName
): array;
```

Get modified params for handler using reflection

## Mvc\Model\BinderInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/BinderInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\BinderInterface

Interface for Phalcon\Mvc\Model\Binder

<div class="api-tree">

- **`Phalcon\Mvc\Model\BinderInterface`**

</div>

__Uses__ `Phalcon\Cache\Adapter\AdapterInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbinderinterface-bindtohandler">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">bindToHandler</span>(<span class="prm"><span class="st">object</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$cacheKey</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$methodName</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Bind models into params in proper handler</span>
</a>
<a class="api-item" href="#mvcmodelbinderinterface-getboundmodels">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBoundModels</span>()</code>
<span class="desc">Gets active bound models</span>
</a>
<a class="api-item" href="#mvcmodelbinderinterface-getcache">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getCache</span>()</code>
<span class="desc">Gets cache instance</span>
</a>
<a class="api-item" href="#mvcmodelbinderinterface-setcache">
<code class="vis vis-public">public</code>
<code class="ret">BinderInterface</code>
<code class="sig"><span class="sf">setCache</span>( <span class="st">AdapterInterface</span> <span class="sv">$cache</span> )</code>
<span class="desc">Sets cache instance</span>
</a>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="mvcmodelbinderinterface-bindtohandler"><code>bindToHandler()</code></h4>

```php
public function bindToHandler(
object $handler,
array $params,
string $cacheKey,
string|null $methodName = null
): array;
```

Bind models into params in proper handler

<h4 id="mvcmodelbinderinterface-getboundmodels"><code>getBoundModels()</code></h4>

```php
public function getBoundModels(): array;
```

Gets active bound models

<h4 id="mvcmodelbinderinterface-getcache"><code>getCache()</code></h4>

```php
public function getCache(): AdapterInterface;
```

Gets cache instance

<h4 id="mvcmodelbinderinterface-setcache"><code>setCache()</code></h4>

```php
public function setCache( AdapterInterface $cache ): BinderInterface;
```

Sets cache instance

## Mvc\Model\Binder\BindableInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Binder/BindableInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Binder\BindableInterface

Interface for bindable classes

<div class="api-tree">

- **`Phalcon\Mvc\Model\Binder\BindableInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelbinderbindableinterface-getmodelname">
<code class="vis vis-public">public</code>
<code class="ret">string|array</code>
<code class="sig"><span class="sf">getModelName</span>()</code>
<span class="desc">Return the model name or models names and parameters keys associated with</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelbinderbindableinterface-getmodelname"><code>getModelName()</code></h4>

```php
public function getModelName(): string|array;
```

Return the model name or models names and parameters keys associated with
this class

## Mvc\Model\Criteria

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Criteria.zep">Source on GitHub</a>

This class is used to build the array parameter required by
Phalcon\Mvc\Model::find() and Phalcon\Mvc\Model::findFirst() using an
object-oriented interface.

```php
<?php

$invoices = Invoices::query()
->where("inv_cst_id = :customerId:")
->andWhere("inv_created_date < '2000-01-01'")
->bind(["customerId" => 1])
->limit(5, 10)
->orderBy("inv_title")
->execute();
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Criteria`** - implements [`Phalcon\Mvc\Model\CriteriaInterface`](#mvcmodelcriteriainterface), [`Phalcon\Di\InjectionAwareInterface`](/5.19/api/phalcon_di/#diinjectionawareinterface)

</div>

__Uses__ `Phalcon\Db\Column` · `Phalcon\Di\Di` · `Phalcon\Di\DiInterface` · `Phalcon\Di\InjectionAwareInterface` · `Phalcon\Mvc\Model\Exceptions\InvalidModelName` · `Phalcon\Mvc\Model\Query\BuilderInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelcriteria-andwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">andWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindParams</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindTypes</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Appends a condition to the current conditions using an AND operator</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-betweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">betweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span></span>)</code>
<span class="desc">Appends a BETWEEN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-bind">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">bind</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Sets the bound parameters in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-bindtypes">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">bindTypes</span>( <span class="st">array</span> <span class="sv">$bindTypes</span> )</code>
<span class="desc">Sets the bind types in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-cache">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">cache</span>( <span class="st">array</span> <span class="sv">$cache</span> )</code>
<span class="desc">Sets the cache options in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-columns">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">columns</span>( <span class="st">mixed</span> <span class="sv">$columns</span> )</code>
<span class="desc">Sets the columns to be queried. The columns can be either a <code>string</code> or</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-conditions">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">conditions</span>( <span class="st">string</span> <span class="sv">$conditions</span> )</code>
<span class="desc">Adds the conditions parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-createbuilder">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">createBuilder</span>()</code>
<span class="desc">Creates a query builder from criteria.</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-distinct">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">distinct</span>( <span class="st">mixed</span> <span class="sv">$distinct</span> )</code>
<span class="desc">Sets SELECT DISTINCT / SELECT ALL flag</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-eager">
<code class="vis vis-public">public</code>
<code class="ret">Criteria</code>
<code class="sig"><span class="sf">eager</span>( <span class="st">array</span> <span class="sv">$paths</span> )</code>
<span class="desc">Pre-loads the named relations when the criteria is executed</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-execute">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">execute</span>()</code>
<span class="desc">Executes a find using the parameters built with the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-forupdate">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">forUpdate</span>( <span class="st">bool</span> <span class="sv">$forUpdate</span><span class="sm"> = true</span> )</code>
<span class="desc">Adds the &quot;for_update&quot; parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-frominput">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">fromInput</span>(<span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = &quot;AND&quot;</span></span>)</code>
<span class="desc">Builds a Phalcon\Mvc\Model\Criteria based on an input array like $_POST</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getcolumns">
<code class="vis vis-public">public</code>
<code class="ret">string|array|null</code>
<code class="sig"><span class="sf">getColumns</span>()</code>
<span class="desc">Returns the columns to be queried</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getconditions">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getConditions</span>()</code>
<span class="desc">Returns the conditions parameter in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getdi">
<code class="vis vis-public">public</code>
<code class="ret">DiInterface</code>
<code class="sig"><span class="sf">getDI</span>()</code>
<span class="desc">Returns the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getgroupby">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getGroupBy</span>()</code>
<span class="desc">Returns the group clause in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-gethaving">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getHaving</span>()</code>
<span class="desc">Returns the having clause in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getlimit">
<code class="vis vis-public">public</code>
<code class="ret">int|array|null</code>
<code class="sig"><span class="sf">getLimit</span>()</code>
<span class="desc">Returns the limit parameter in the criteria, which will be</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getmodelname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModelName</span>()</code>
<span class="desc">Returns an internal model name on which the criteria will be applied</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getorderby">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getOrderBy</span>()</code>
<span class="desc">Returns the order clause in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getParams</span>()</code>
<span class="desc">Returns all the parameters defined in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-getwhere">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getWhere</span>()</code>
<span class="desc">Returns the conditions parameter in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-groupby">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">groupBy</span>( <span class="st">mixed</span> <span class="sv">$group</span> )</code>
<span class="desc">Adds the group-by clause to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-having">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">having</span>( <span class="st">mixed</span> <span class="sv">$having</span> )</code>
<span class="desc">Adds the having clause to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-inwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">inWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span></span>)</code>
<span class="desc">Appends an IN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-innerjoin">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">innerJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds an INNER join to the query</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-join">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">join</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$alias</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$type</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds an INNER join to the query</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-leftjoin">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">leftJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a LEFT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-limit">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">limit</span>(<span class="prm"><span class="st">int</span> <span class="sv">$limit</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$offset</span><span class="sm"> = 0</span></span>)</code>
<span class="desc">Adds the limit parameter to the criteria.</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-notbetweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">notBetweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span></span>)</code>
<span class="desc">Appends a NOT BETWEEN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-notinwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">notInWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span></span>)</code>
<span class="desc">Appends a NOT IN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-orwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">orWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindParams</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindTypes</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Appends a condition to the current conditions using an OR operator</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-orderby">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">orderBy</span>( <span class="st">string</span> <span class="sv">$orderColumns</span> )</code>
<span class="desc">Adds the order-by clause to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-rightjoin">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">rightJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a RIGHT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-setmodelname">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">setModelName</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
<span class="desc">Set a model on which the query will be executed</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-sharedlock">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">sharedLock</span>( <span class="st">bool</span> <span class="sv">$sharedLock</span><span class="sm"> = true</span> )</code>
<span class="desc">Adds the &quot;shared_lock&quot; parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteria-where">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">where</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindParams</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindTypes</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets the conditions parameter in the criteria</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$bindParams</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$bindTypes</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$hiddenParamNumber</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$model</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$params</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 39</div>

<h4 id="mvcmodelcriteria-andwhere"><code>andWhere()</code></h4>

```php
public function andWhere(
string $conditions,
mixed $bindParams = null,
mixed $bindTypes = null
): CriteriaInterface;
```

Appends a condition to the current conditions using an AND operator

<h4 id="mvcmodelcriteria-betweenwhere"><code>betweenWhere()</code></h4>

```php
public function betweenWhere(
string $expr,
mixed $minimum,
mixed $maximum
): CriteriaInterface;
```

Appends a BETWEEN condition to the current conditions

```php
$criteria->betweenWhere("price", 100.25, 200.50);
```

<h4 id="mvcmodelcriteria-bind"><code>bind()</code></h4>

```php
public function bind(
array $bindParams,
bool $merge = false
): CriteriaInterface;
```

Sets the bound parameters in the criteria
This method replaces all previously set bound parameters

<h4 id="mvcmodelcriteria-bindtypes"><code>bindTypes()</code></h4>

```php
public function bindTypes( array $bindTypes ): CriteriaInterface;
```

Sets the bind types in the criteria
This method replaces all previously set bound parameters

<h4 id="mvcmodelcriteria-cache"><code>cache()</code></h4>

```php
public function cache( array $cache ): CriteriaInterface;
```

Sets the cache options in the criteria
This method replaces all previously set cache options

<h4 id="mvcmodelcriteria-columns"><code>columns()</code></h4>

```php
public function columns( mixed $columns ): CriteriaInterface;
```

Sets the columns to be queried. The columns can be either a `string` or
an `array` of strings. If the argument is a (single, non-embedded) string,
its content can specify one or more columns, separated by commas, the same
way that one uses the SQL select statement. You can use aliases, aggregate
functions, etc. If you need to reference other models you will need to
reference them with their namespaces.

When using an array as a parameter, you will need to specify one field
per array element. If a non-numeric key is defined in the array, it will
be used as the alias in the query

```php
<?php

// String, comma separated values
$criteria->columns("id, category");

// Array, one column per element
$criteria->columns(
[
    "inv_id",
    "inv_total",
]
);

// Array with named key. The name of the key acts as an
// alias (`AS` clause)
$criteria->columns(
[
    "inv_cst_id",
    "total_invoices" => "COUNT(*)",
]
);

// Different models
$criteria->columns(
[
    "\Phalcon\Models\Invoices.*",
    "\Phalcon\Models\Customers.cst_name_first",
    "\Phalcon\Models\Customers.cst_name_last",
]
);
```

<h4 id="mvcmodelcriteria-conditions"><code>conditions()</code></h4>

```php
public function conditions( string $conditions ): CriteriaInterface;
```

Adds the conditions parameter to the criteria

<h4 id="mvcmodelcriteria-createbuilder"><code>createBuilder()</code></h4>

```php
public function createBuilder(): BuilderInterface;
```

Creates a query builder from criteria.

```php
<?php

$invoices = Invoices::query()
->where("inv_cst_id = :customerId:")
->bind(["customerId" => 1])
->createBuilder();
```

<h4 id="mvcmodelcriteria-distinct"><code>distinct()</code></h4>

```php
public function distinct( mixed $distinct ): CriteriaInterface;
```

Sets SELECT DISTINCT / SELECT ALL flag

<h4 id="mvcmodelcriteria-eager"><code>eager()</code></h4>

```php
public function eager( array $paths ): Criteria;
```

Pre-loads the named relations when the criteria is executed

```php
$invoices = Invoices::query()
->eager(["customer"])
->where("inv_total > 100")
->execute();
```

execute() forwards the parameters to Model::find(), which owns the
loading, so this is a pass-through and takes the same shape: an array of
dot-delimited relation paths, optionally `path => options`.

Returns the concrete criteria rather than the interface because the
method is deliberately not part of CriteriaInterface - adding it there
would break every userland implementation.

<h4 id="mvcmodelcriteria-execute"><code>execute()</code></h4>

```php
public function execute(): ResultsetInterface;
```

Executes a find using the parameters built with the criteria

<h4 id="mvcmodelcriteria-forupdate"><code>forUpdate()</code></h4>

```php
public function forUpdate( bool $forUpdate = true ): CriteriaInterface;
```

Adds the "for_update" parameter to the criteria

<h4 id="mvcmodelcriteria-frominput"><code>fromInput()</code></h4>

```php
public static function fromInput(
DiInterface $container,
string $modelName,
array $data,
string $operator = "AND"
): CriteriaInterface;
```

Builds a Phalcon\Mvc\Model\Criteria based on an input array like $_POST

<h4 id="mvcmodelcriteria-getcolumns"><code>getColumns()</code></h4>

```php
public function getColumns(): string|array|null;
```

Returns the columns to be queried

<h4 id="mvcmodelcriteria-getconditions"><code>getConditions()</code></h4>

```php
public function getConditions(): string|null;
```

Returns the conditions parameter in the criteria

<h4 id="mvcmodelcriteria-getdi"><code>getDI()</code></h4>

```php
public function getDI(): DiInterface;
```

Returns the DependencyInjector container

<h4 id="mvcmodelcriteria-getgroupby"><code>getGroupBy()</code></h4>

```php
public function getGroupBy();
```

Returns the group clause in the criteria

<h4 id="mvcmodelcriteria-gethaving"><code>getHaving()</code></h4>

```php
public function getHaving();
```

Returns the having clause in the criteria

<h4 id="mvcmodelcriteria-getlimit"><code>getLimit()</code></h4>

```php
public function getLimit(): int|array|null;
```

Returns the limit parameter in the criteria, which will be

- An integer if 'limit' was set without an 'offset'
- An array with 'number' and 'offset' keys if an offset was set with the limit
- NULL if limit has not been set

<h4 id="mvcmodelcriteria-getmodelname"><code>getModelName()</code></h4>

```php
public function getModelName(): string;
```

Returns an internal model name on which the criteria will be applied

<h4 id="mvcmodelcriteria-getorderby"><code>getOrderBy()</code></h4>

```php
public function getOrderBy(): string|null;
```

Returns the order clause in the criteria

<h4 id="mvcmodelcriteria-getparams"><code>getParams()</code></h4>

```php
public function getParams(): array;
```

Returns all the parameters defined in the criteria

<h4 id="mvcmodelcriteria-getwhere"><code>getWhere()</code></h4>

```php
public function getWhere(): string|null;
```

Returns the conditions parameter in the criteria

<h4 id="mvcmodelcriteria-groupby"><code>groupBy()</code></h4>

```php
public function groupBy( mixed $group ): CriteriaInterface;
```

Adds the group-by clause to the criteria

<h4 id="mvcmodelcriteria-having"><code>having()</code></h4>

```php
public function having( mixed $having ): CriteriaInterface;
```

Adds the having clause to the criteria

<h4 id="mvcmodelcriteria-inwhere"><code>inWhere()</code></h4>

```php
public function inWhere(
string $expr,
array $values
): CriteriaInterface;
```

Appends an IN condition to the current conditions

```php
$criteria->inWhere("id", [1, 2, 3]);
```

<h4 id="mvcmodelcriteria-innerjoin"><code>innerJoin()</code></h4>

```php
public function innerJoin(
string $model,
mixed $conditions = null,
mixed $alias = null
): CriteriaInterface;
```

Adds an INNER join to the query

```php
<?php

$criteria->innerJoin(
Invoices::class
);

$criteria->innerJoin(
Invoices::class,
"inv_cst_id = Customers.cst_id"
);

$criteria->innerJoin(
Invoices::class,
"i.inv_cst_id = Customers.cst_id",
"i"
);
```

<h4 id="mvcmodelcriteria-join"><code>join()</code></h4>

```php
public function join(
string $model,
mixed $conditions = null,
mixed $alias = null,
mixed $type = null
): CriteriaInterface;
```

Adds an INNER join to the query

```php
<?php

$criteria->join(
Invoices::class
);

$criteria->join(
Invoices::class,
"inv_cst_id = Customers.cst_id"
);

$criteria->join(
Invoices::class,
"i.inv_cst_id = Customers.cst_id",
"i"
);

$criteria->join(
Invoices::class,
"i.inv_cst_id = Customers.cst_id",
"i",
"LEFT"
);
```

<h4 id="mvcmodelcriteria-leftjoin"><code>leftJoin()</code></h4>

```php
public function leftJoin(
string $model,
mixed $conditions = null,
mixed $alias = null
): CriteriaInterface;
```

Adds a LEFT join to the query

```php
<?php

$criteria->leftJoin(
Invoices::class,
"i.inv_cst_id = Customers.cst_id",
"i"
);
```

<h4 id="mvcmodelcriteria-limit"><code>limit()</code></h4>

```php
public function limit(
int $limit,
int $offset = 0
): CriteriaInterface;
```

Adds the limit parameter to the criteria.

```php
$criteria->limit(100);
$criteria->limit(100, 200);
$criteria->limit("100", "200");
```

<h4 id="mvcmodelcriteria-notbetweenwhere"><code>notBetweenWhere()</code></h4>

```php
public function notBetweenWhere(
string $expr,
mixed $minimum,
mixed $maximum
): CriteriaInterface;
```

Appends a NOT BETWEEN condition to the current conditions

```php
$criteria->notBetweenWhere("price", 100.25, 200.50);
```

<h4 id="mvcmodelcriteria-notinwhere"><code>notInWhere()</code></h4>

```php
public function notInWhere(
string $expr,
array $values
): CriteriaInterface;
```

Appends a NOT IN condition to the current conditions

```php
$criteria->notInWhere("id", [1, 2, 3]);
```

<h4 id="mvcmodelcriteria-orwhere"><code>orWhere()</code></h4>

```php
public function orWhere(
string $conditions,
mixed $bindParams = null,
mixed $bindTypes = null
): CriteriaInterface;
```

Appends a condition to the current conditions using an OR operator

<h4 id="mvcmodelcriteria-orderby"><code>orderBy()</code></h4>

```php
public function orderBy( string $orderColumns ): CriteriaInterface;
```

Adds the order-by clause to the criteria

<h4 id="mvcmodelcriteria-rightjoin"><code>rightJoin()</code></h4>

```php
public function rightJoin(
string $model,
mixed $conditions = null,
mixed $alias = null
): CriteriaInterface;
```

Adds a RIGHT join to the query

```php
<?php

$criteria->rightJoin(
Invoices::class,
"i.inv_cst_id = Customers.cst_id",
"i"
);
```

<h4 id="mvcmodelcriteria-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the DependencyInjector container

<h4 id="mvcmodelcriteria-setmodelname"><code>setModelName()</code></h4>

```php
public function setModelName( string $modelName ): CriteriaInterface;
```

Set a model on which the query will be executed

<h4 id="mvcmodelcriteria-sharedlock"><code>sharedLock()</code></h4>

```php
public function sharedLock( bool $sharedLock = true ): CriteriaInterface;
```

Adds the "shared_lock" parameter to the criteria

<h4 id="mvcmodelcriteria-where"><code>where()</code></h4>

```php
public function where(
string $conditions,
mixed $bindParams = null,
mixed $bindTypes = null
): CriteriaInterface;
```

Sets the conditions parameter in the criteria

## Mvc\Model\CriteriaInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/CriteriaInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\CriteriaInterface

Interface for Phalcon\Mvc\Model\Criteria

<div class="api-tree">

- **`Phalcon\Mvc\Model\CriteriaInterface`**

</div>

__Uses__ `Phalcon\Di\DiInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelcriteriainterface-andwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">andWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindParams</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindTypes</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Appends a condition to the current conditions using an AND operator</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-betweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">betweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span></span>)</code>
<span class="desc">Appends a BETWEEN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-bind">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">bind</span>( <span class="st">array</span> <span class="sv">$bindParams</span> )</code>
<span class="desc">Sets the bound parameters in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-bindtypes">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">bindTypes</span>( <span class="st">array</span> <span class="sv">$bindTypes</span> )</code>
<span class="desc">Sets the bind types in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-cache">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">cache</span>( <span class="st">array</span> <span class="sv">$cache</span> )</code>
<span class="desc">Sets the cache options in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-conditions">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">conditions</span>( <span class="st">string</span> <span class="sv">$conditions</span> )</code>
<span class="desc">Adds the conditions parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-distinct">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">distinct</span>( <span class="st">mixed</span> <span class="sv">$distinct</span> )</code>
<span class="desc">Sets SELECT DISTINCT / SELECT ALL flag</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-execute">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">execute</span>()</code>
<span class="desc">Executes a find using the parameters built with the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-forupdate">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">forUpdate</span>( <span class="st">bool</span> <span class="sv">$forUpdate</span><span class="sm"> = true</span> )</code>
<span class="desc">Sets the &quot;for_update&quot; parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getcolumns">
<code class="vis vis-public">public</code>
<code class="ret">string|array|null</code>
<code class="sig"><span class="sf">getColumns</span>()</code>
<span class="desc">Returns the columns to be queried</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getconditions">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getConditions</span>()</code>
<span class="desc">Returns the conditions parameter in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getgroupby">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getGroupBy</span>()</code>
<span class="desc">Returns the group clause in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-gethaving">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getHaving</span>()</code>
<span class="desc">Returns the having clause in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getlimit">
<code class="vis vis-public">public</code>
<code class="ret">int|array|null</code>
<code class="sig"><span class="sf">getLimit</span>()</code>
<span class="desc">Returns the limit parameter in the criteria, which will be</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getmodelname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModelName</span>()</code>
<span class="desc">Returns an internal model name on which the criteria will be applied</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getorderby">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getOrderBy</span>()</code>
<span class="desc">Returns the order parameter in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getParams</span>()</code>
<span class="desc">Returns all the parameters defined in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-getwhere">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getWhere</span>()</code>
<span class="desc">Returns the conditions parameter in the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-groupby">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">groupBy</span>( <span class="st">mixed</span> <span class="sv">$group</span> )</code>
<span class="desc">Adds the group-by clause to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-having">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">having</span>( <span class="st">mixed</span> <span class="sv">$having</span> )</code>
<span class="desc">Adds the having clause to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-inwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">inWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span></span>)</code>
<span class="desc">Appends an IN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-innerjoin">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">innerJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds an INNER join to the query</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-leftjoin">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">leftJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a LEFT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-limit">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">limit</span>(<span class="prm"><span class="st">int</span> <span class="sv">$limit</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$offset</span><span class="sm"> = 0</span></span>)</code>
<span class="desc">Sets the limit parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-notbetweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">notBetweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span></span>)</code>
<span class="desc">Appends a NOT BETWEEN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-notinwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">notInWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span></span>)</code>
<span class="desc">Appends a NOT IN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-orwhere">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">orWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindParams</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindTypes</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Appends a condition to the current conditions using an OR operator</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-orderby">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">orderBy</span>( <span class="st">string</span> <span class="sv">$orderColumns</span> )</code>
<span class="desc">Adds the order-by parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-rightjoin">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">rightJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a RIGHT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-setmodelname">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">setModelName</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
<span class="desc">Set a model on which the query will be executed</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-sharedlock">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">sharedLock</span>( <span class="st">bool</span> <span class="sv">$sharedLock</span><span class="sm"> = true</span> )</code>
<span class="desc">Sets the &quot;shared_lock&quot; parameter to the criteria</span>
</a>
<a class="api-item" href="#mvcmodelcriteriainterface-where">
<code class="vis vis-public">public</code>
<code class="ret">CriteriaInterface</code>
<code class="sig"><span class="sf">where</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindParams</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$bindTypes</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets the conditions parameter in the criteria</span>
</a>
</div>

### Methods

<div class="api-group">Public · 32</div>

<h4 id="mvcmodelcriteriainterface-andwhere"><code>andWhere()</code></h4>

```php
public function andWhere(
string $conditions,
mixed $bindParams = null,
mixed $bindTypes = null
): CriteriaInterface;
```

Appends a condition to the current conditions using an AND operator

<h4 id="mvcmodelcriteriainterface-betweenwhere"><code>betweenWhere()</code></h4>

```php
public function betweenWhere(
string $expr,
mixed $minimum,
mixed $maximum
): CriteriaInterface;
```

Appends a BETWEEN condition to the current conditions

```php
$criteria->betweenWhere("price", 100.25, 200.50);
```

<h4 id="mvcmodelcriteriainterface-bind"><code>bind()</code></h4>

```php
public function bind( array $bindParams ): CriteriaInterface;
```

Sets the bound parameters in the criteria
This method replaces all previously set bound parameters

<h4 id="mvcmodelcriteriainterface-bindtypes"><code>bindTypes()</code></h4>

```php
public function bindTypes( array $bindTypes ): CriteriaInterface;
```

Sets the bind types in the criteria
This method replaces all previously set bound parameters

<h4 id="mvcmodelcriteriainterface-cache"><code>cache()</code></h4>

```php
public function cache( array $cache ): CriteriaInterface;
```

Sets the cache options in the criteria
This method replaces all previously set cache options

<h4 id="mvcmodelcriteriainterface-conditions"><code>conditions()</code></h4>

```php
public function conditions( string $conditions ): CriteriaInterface;
```

Adds the conditions parameter to the criteria

<h4 id="mvcmodelcriteriainterface-distinct"><code>distinct()</code></h4>

```php
public function distinct( mixed $distinct ): CriteriaInterface;
```

Sets SELECT DISTINCT / SELECT ALL flag

<h4 id="mvcmodelcriteriainterface-execute"><code>execute()</code></h4>

```php
public function execute(): ResultsetInterface;
```

Executes a find using the parameters built with the criteria

<h4 id="mvcmodelcriteriainterface-forupdate"><code>forUpdate()</code></h4>

```php
public function forUpdate( bool $forUpdate = true ): CriteriaInterface;
```

Sets the "for_update" parameter to the criteria

<h4 id="mvcmodelcriteriainterface-getcolumns"><code>getColumns()</code></h4>

```php
public function getColumns(): string|array|null;
```

Returns the columns to be queried

<h4 id="mvcmodelcriteriainterface-getconditions"><code>getConditions()</code></h4>

```php
public function getConditions(): string|null;
```

Returns the conditions parameter in the criteria

<h4 id="mvcmodelcriteriainterface-getgroupby"><code>getGroupBy()</code></h4>

```php
public function getGroupBy();
```

Returns the group clause in the criteria

<h4 id="mvcmodelcriteriainterface-gethaving"><code>getHaving()</code></h4>

```php
public function getHaving();
```

Returns the having clause in the criteria

<h4 id="mvcmodelcriteriainterface-getlimit"><code>getLimit()</code></h4>

```php
public function getLimit(): int|array|null;
```

Returns the limit parameter in the criteria, which will be

- An integer if 'limit' was set without an 'offset'
- An array with 'number' and 'offset' keys if an offset was set with the limit
- NULL if limit has not been set

<h4 id="mvcmodelcriteriainterface-getmodelname"><code>getModelName()</code></h4>

```php
public function getModelName(): string;
```

Returns an internal model name on which the criteria will be applied

<h4 id="mvcmodelcriteriainterface-getorderby"><code>getOrderBy()</code></h4>

```php
public function getOrderBy(): string|null;
```

Returns the order parameter in the criteria

<h4 id="mvcmodelcriteriainterface-getparams"><code>getParams()</code></h4>

```php
public function getParams(): array;
```

Returns all the parameters defined in the criteria

<h4 id="mvcmodelcriteriainterface-getwhere"><code>getWhere()</code></h4>

```php
public function getWhere(): string|null;
```

Returns the conditions parameter in the criteria

<h4 id="mvcmodelcriteriainterface-groupby"><code>groupBy()</code></h4>

```php
public function groupBy( mixed $group ): CriteriaInterface;
```

Adds the group-by clause to the criteria

<h4 id="mvcmodelcriteriainterface-having"><code>having()</code></h4>

```php
public function having( mixed $having ): CriteriaInterface;
```

Adds the having clause to the criteria

<h4 id="mvcmodelcriteriainterface-inwhere"><code>inWhere()</code></h4>

```php
public function inWhere(
string $expr,
array $values
): CriteriaInterface;
```

Appends an IN condition to the current conditions

```php
$criteria->inWhere("id", [1, 2, 3]);
```

<h4 id="mvcmodelcriteriainterface-innerjoin"><code>innerJoin()</code></h4>

```php
public function innerJoin(
string $model,
mixed $conditions = null,
mixed $alias = null
): CriteriaInterface;
```

Adds an INNER join to the query

```php
$criteria->innerJoin(
Orders::class
);

$criteria->innerJoin(
Orders::class,
"r.ord_id = OrdersProducts.oxp_ord_id"
);

$criteria->innerJoin(
Orders::class,
"r.ord_id = OrdersProducts.oxp_ord_id",
"r"
);
```

<h4 id="mvcmodelcriteriainterface-leftjoin"><code>leftJoin()</code></h4>

```php
public function leftJoin(
string $model,
mixed $conditions = null,
mixed $alias = null
): CriteriaInterface;
```

Adds a LEFT join to the query

```php
$criteria->leftJoin(
Orders::class,
"r.ord_id = OrdersProducts.oxp_ord_id",
"r"
);
```

<h4 id="mvcmodelcriteriainterface-limit"><code>limit()</code></h4>

```php
public function limit(
int $limit,
int $offset = 0
): CriteriaInterface;
```

Sets the limit parameter to the criteria

<h4 id="mvcmodelcriteriainterface-notbetweenwhere"><code>notBetweenWhere()</code></h4>

```php
public function notBetweenWhere(
string $expr,
mixed $minimum,
mixed $maximum
): CriteriaInterface;
```

Appends a NOT BETWEEN condition to the current conditions

```php
$criteria->notBetweenWhere("price", 100.25, 200.50);
```

<h4 id="mvcmodelcriteriainterface-notinwhere"><code>notInWhere()</code></h4>

```php
public function notInWhere(
string $expr,
array $values
): CriteriaInterface;
```

Appends a NOT IN condition to the current conditions

```php
$criteria->notInWhere("id", [1, 2, 3]);
```

<h4 id="mvcmodelcriteriainterface-orwhere"><code>orWhere()</code></h4>

```php
public function orWhere(
string $conditions,
mixed $bindParams = null,
mixed $bindTypes = null
): CriteriaInterface;
```

Appends a condition to the current conditions using an OR operator

<h4 id="mvcmodelcriteriainterface-orderby"><code>orderBy()</code></h4>

```php
public function orderBy( string $orderColumns ): CriteriaInterface;
```

Adds the order-by parameter to the criteria

<h4 id="mvcmodelcriteriainterface-rightjoin"><code>rightJoin()</code></h4>

```php
public function rightJoin(
string $model,
mixed $conditions = null,
mixed $alias = null
): CriteriaInterface;
```

Adds a RIGHT join to the query

```php
$criteria->rightJoin(
Orders::class,
"r.ord_id = OrdersProducts.oxp_ord_id",
"r"
);
```

<h4 id="mvcmodelcriteriainterface-setmodelname"><code>setModelName()</code></h4>

```php
public function setModelName( string $modelName ): CriteriaInterface;
```

Set a model on which the query will be executed

<h4 id="mvcmodelcriteriainterface-sharedlock"><code>sharedLock()</code></h4>

```php
public function sharedLock( bool $sharedLock = true ): CriteriaInterface;
```

Sets the "shared_lock" parameter to the criteria

<h4 id="mvcmodelcriteriainterface-where"><code>where()</code></h4>

```php
public function where(
string $conditions,
mixed $bindParams = null,
mixed $bindTypes = null
): CriteriaInterface;
```

Sets the conditions parameter in the criteria

## Mvc\Model\Eager\Loader

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Eager/Loader.zep">Source on GitHub</a>

Loads model relations in bulk - a bounded number of queries per relation
node rather than one per record - and applies the result to records as they
are hydrated.

<div class="api-tree">

- **`Phalcon\Mvc\Model\Eager\Loader`**

</div>

__Uses__ `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Exceptions\EagerRowLimitExceeded` · `Phalcon\Mvc\Model\Exceptions\MissingEagerKeyColumn` · `Phalcon\Mvc\Model\Exceptions\UnknownEagerRelation` · `Phalcon\Mvc\Model\Manager` · `Phalcon\Mvc\Model\ManagerInterface` · `Phalcon\Mvc\Model\Relation` · `Phalcon\Mvc\Model\RelationInterface` · `Phalcon\Mvc\Model\Resultset\Simple`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodeleagerloader-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">ManagerInterface</span> <span class="sv">$manager</span> )</code>
</a>
<a class="api-item" href="#mvcmodeleagerloader-apply">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">apply</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$eagerMap</span></span>)</code>
<span class="desc">Applies a pre-built eager map to a single record.</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-buildkey">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">buildKey</span>( <span class="st">array</span> <span class="sv">$values</span> )</code>
<span class="desc">Builds the lookup key for a set of key-field values.</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-loadresultset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">loadResultset</span>(<span class="prm"><span class="st">Simple</span> <span class="sv">$resultset</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$tree</span></span>)</code>
<span class="desc">Loads a relation tree for a root resultset.</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-buildmap">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">buildMap</span>(<span class="prm"><span class="st">array</span> <span class="sv">$parents</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$tree</span></span>)</code>
<span class="desc">Builds one level of the map.</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-buildnode">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">buildNode</span>(<span class="prm"><span class="st">RelationInterface</span> <span class="sv">$relation</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$parents</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$node</span></span>)</code>
<span class="desc">Builds a single map node: one query, indexed by the referenced field.</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-buildthroughnode">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">buildThroughNode</span>(<span class="prm"><span class="st">RelationInterface</span> <span class="sv">$relation</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$parents</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$node</span></span>)</code>
<span class="desc">Through-relations in two steps rather than a join.</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-collectkeys">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">collectKeys</span>(<span class="prm"><span class="st">array</span> <span class="sv">$parents</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span></span>)</code>
<span class="desc">Distinct, non-null local key tuples across the parent set.</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-fetchreferenced">
<code class="vis vis-protected">protected</code>
<code class="ret">Simple</code>
<code class="sig"><span class="sf">fetchReferenced</span>(<span class="prm"><span class="st">RelationInterface</span> <span class="sv">$relation</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$keys</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span></span>)</code>
<span class="desc">One query per relation node. An empty key set issues none at all -</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-normalizefields">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">normalizeFields</span>( <span class="st">mixed</span> <span class="sv">$fields</span> )</code>
<span class="desc">Relation fields are declared as a string for a single column and an</span>
</a>
<a class="api-item" href="#mvcmodeleagerloader-recordkey">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">recordKey</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$fields</span></span>)</code>
<span class="desc">Lookup key for an already-hydrated record.</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MAX_ROWS_PER_LEVEL</span><span class="sm"> = 100000</span></code>
<span class="desc">Maximum number of rows a single relation node may return before the load is refused. Guards against a to-many hop that follows a to-one hop, which can fan out to an entire table.</span>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface</code>
<code class="sig"><span class="sv">$manager</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="mvcmodeleagerloader-__construct"><code>__construct()</code></h4>

```php
public function __construct( ManagerInterface $manager );
```

<h4 id="mvcmodeleagerloader-apply"><code>apply()</code></h4>

```php
public static function apply(
mixed $record,
array $eagerMap
): void;
```

Applies a pre-built eager map to a single record.

Shared by Resultset\Simple::current(), which stamps records as they are
hydrated, and by the loader itself, which stamps instances it retains.

Both Model and Row implement readAttribute(), so key extraction is
uniform; only the write differs. A Row is what a column-restricted
select produces, and it has no relation cache.

<h4 id="mvcmodeleagerloader-buildkey"><code>buildKey()</code></h4>

```php
public static function buildKey( array $values ): string;
```

Builds the lookup key for a set of key-field values.

Always a string. A single value is cast, which also neutralizes the
PostgreSQL-integer / MySQL-string mismatch for the same column. Multiple
values are length-prefixed so ["a|b", "c"] cannot collide with
["a", "b|c"].

<h4 id="mvcmodeleagerloader-loadresultset"><code>loadResultset()</code></h4>

```php
public function loadResultset(
Simple $resultset,
string $modelName,
array $tree
): void;
```

Loads a relation tree for a root resultset.

The resultset is materialized first: at this point the statement has run
but no row has been consumed, so fetching every row costs nothing extra
and gives the key values without a second pass over the cursor.

<div class="api-group">Protected · 7</div>

<h4 id="mvcmodeleagerloader-buildmap"><code>buildMap()</code></h4>

```php
protected function buildMap(
array $parents,
string $modelName,
array $tree
): array;
```

Builds one level of the map.

<h4 id="mvcmodeleagerloader-buildnode"><code>buildNode()</code></h4>

```php
protected function buildNode(
RelationInterface $relation,
string $alias,
array $parents,
array $node
): array;
```

Builds a single map node: one query, indexed by the referenced field.

<h4 id="mvcmodeleagerloader-buildthroughnode"><code>buildThroughNode()</code></h4>

```php
protected function buildThroughNode(
RelationInterface $relation,
string $alias,
array $parents,
array $node
): array;
```

Through-relations in two steps rather than a join.

Step one fetches (parentKey, referencedKey) pairs from the intermediate
model; step two fetches the referenced rows for the keys those pairs
collected. The pairs then attribute referenced rows back to parents
without a synthetic column in the select list, and without the row
multiplication an inner join would cause.

<h4 id="mvcmodeleagerloader-collectkeys"><code>collectKeys()</code></h4>

```php
protected function collectKeys(
array $parents,
array $fields,
string $alias
): array;
```

Distinct, non-null local key tuples across the parent set.

<h4 id="mvcmodeleagerloader-fetchreferenced"><code>fetchReferenced()</code></h4>

```php
protected function fetchReferenced(
RelationInterface $relation,
string $alias,
array $keys,
array $options
): Simple;
```

One query per relation node. An empty key set issues none at all -
WHERE IN () is a syntax error and there is nothing to attribute.

<h4 id="mvcmodeleagerloader-normalizefields"><code>normalizeFields()</code></h4>

```php
protected function normalizeFields( mixed $fields ): array;
```

Relation fields are declared as a string for a single column and an
array for a composite key. Normalizing removes that fork everywhere
downstream.

<h4 id="mvcmodeleagerloader-recordkey"><code>recordKey()</code></h4>

```php
protected function recordKey(
mixed $record,
array $fields
): string;
```

Lookup key for an already-hydrated record.

## Mvc\Model\Eager\PathTree

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Eager/PathTree.zep">Source on GitHub</a>

Turns the `eager` find parameter into a tree.

Elements are either a bare path string or `path => options`. A path implies
every one of its prefixes and prefixes are merged, so ["customer",
"customer.country"] and ["customer.country"] produce the same two-node tree.
The number of queries an eager load costs follows the number of nodes in
this tree, not the number of elements supplied.

<div class="api-tree">

- **`Phalcon\Mvc\Model\Eager\PathTree`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exceptions\InvalidEagerPath` · `Phalcon\Mvc\Model\Exceptions\UnsupportedEagerOption`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodeleagerpathtree-parse">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">parse</span>( <span class="st">array</span> <span class="sv">$spec</span> )</code>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MAX_DEPTH</span><span class="sm"> = 5</span></code>
<span class="desc">Longest path accepted. Depth alone is not what makes an eager load expensive, but an unbounded path is never intentional.</span>
</div>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodeleagerpathtree-parse"><code>parse()</code></h4>

```php
public static function parse( array $spec ): array;
```

## Mvc\Model\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exception.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Exception

Exceptions thrown in Phalcon\Mvc\Model\* classes will use this class

<div class="api-tree">

- `\Exception`
- **`Phalcon\Mvc\Model\Exception`**
- [`Phalcon\Mvc\Model\Behavior\Exceptions\MissingRequiredOption`](#mvcmodelbehaviorexceptionsmissingrequiredoption)
- [`Phalcon\Mvc\Model\Exceptions\BelongsToRequiresObject`](#mvcmodelexceptionsbelongstorequiresobject)
- [`Phalcon\Mvc\Model\Exceptions\BindTypeNotDefined`](#mvcmodelexceptionsbindtypenotdefined)
- [`Phalcon\Mvc\Model\Exceptions\CannotResolveAttribute`](#mvcmodelexceptionscannotresolveattribute)
- [`Phalcon\Mvc\Model\Exceptions\ColumnNotInMap`](#mvcmodelexceptionscolumnnotinmap)
- [`Phalcon\Mvc\Model\Exceptions\ColumnNotInTableColumns`](#mvcmodelexceptionscolumnnotintablecolumns)
- [`Phalcon\Mvc\Model\Exceptions\ColumnNotInTableMap`](#mvcmodelexceptionscolumnnotintablemap)
- [`Phalcon\Mvc\Model\Exceptions\CorruptColumnType`](#mvcmodelexceptionscorruptcolumntype)
- [`Phalcon\Mvc\Model\Exceptions\CursorIsImmutable`](#mvcmodelexceptionscursorisimmutable)
- [`Phalcon\Mvc\Model\Exceptions\DataTypeNotDefined`](#mvcmodelexceptionsdatatypenotdefined)
- [`Phalcon\Mvc\Model\Exceptions\EagerRowLimitExceeded`](#mvcmodelexceptionseagerrowlimitexceeded)
- [`Phalcon\Mvc\Model\Exceptions\HandlerMustImplementBindable`](#mvcmodelexceptionshandlermustimplementbindable)
- [`Phalcon\Mvc\Model\Exceptions\IdentityNotInColumnMap`](#mvcmodelexceptionsidentitynotincolumnmap)
- [`Phalcon\Mvc\Model\Exceptions\IdentityNotInTableColumns`](#mvcmodelexceptionsidentitynotintablecolumns)
- [`Phalcon\Mvc\Model\Exceptions\IndexNotInCursor`](#mvcmodelexceptionsindexnotincursor)
- [`Phalcon\Mvc\Model\Exceptions\IndexNotInRow`](#mvcmodelexceptionsindexnotinrow)
- [`Phalcon\Mvc\Model\Exceptions\InvalidConnectionService`](#mvcmodelexceptionsinvalidconnectionservice)
- [`Phalcon\Mvc\Model\Exceptions\InvalidContainer`](#mvcmodelexceptionsinvalidcontainer)
- [`Phalcon\Mvc\Model\Exceptions\InvalidDumpResultKey`](#mvcmodelexceptionsinvaliddumpresultkey)
- [`Phalcon\Mvc\Model\Exceptions\InvalidEagerParameter`](#mvcmodelexceptionsinvalideagerparameter)
- [`Phalcon\Mvc\Model\Exceptions\InvalidEagerPath`](#mvcmodelexceptionsinvalideagerpath)
- [`Phalcon\Mvc\Model\Exceptions\InvalidFindParameters`](#mvcmodelexceptionsinvalidfindparameters)
- [`Phalcon\Mvc\Model\Exceptions\InvalidGetModelNameReturn`](#mvcmodelexceptionsinvalidgetmodelnamereturn)
- [`Phalcon\Mvc\Model\Exceptions\InvalidModelName`](#mvcmodelexceptionsinvalidmodelname)
- [`Phalcon\Mvc\Model\Exceptions\InvalidModelsManagerService`](#mvcmodelexceptionsinvalidmodelsmanagerservice)
- [`Phalcon\Mvc\Model\Exceptions\InvalidModelsMetadataService`](#mvcmodelexceptionsinvalidmodelsmetadataservice)
- [`Phalcon\Mvc\Model\Exceptions\InvalidResultsetCacheService`](#mvcmodelexceptionsinvalidresultsetcacheservice)
- [`Phalcon\Mvc\Model\Exceptions\InvalidReturnedRecord`](#mvcmodelexceptionsinvalidreturnedrecord)
- [`Phalcon\Mvc\Model\Exceptions\InvalidSerializationData`](#mvcmodelexceptionsinvalidserializationdata)
- [`Phalcon\Mvc\Model\Exceptions\ManagerOrmServicesUnavailable`](#mvcmodelexceptionsmanagerormservicesunavailable)
- [`Phalcon\Mvc\Model\Exceptions\MethodNotFound`](#mvcmodelexceptionsmethodnotfound)
- [`Phalcon\Mvc\Model\Exceptions\MissingEagerKeyColumn`](#mvcmodelexceptionsmissingeagerkeycolumn)
- [`Phalcon\Mvc\Model\Exceptions\MissingMethodName`](#mvcmodelexceptionsmissingmethodname)
- [`Phalcon\Mvc\Model\Exceptions\MissingModelClassName`](#mvcmodelexceptionsmissingmodelclassname)
- [`Phalcon\Mvc\Model\Exceptions\ModelCouldNotLoad`](#mvcmodelexceptionsmodelcouldnotload)
- [`Phalcon\Mvc\Model\Exceptions\ModelOrmServicesUnavailable`](#mvcmodelexceptionsmodelormservicesunavailable)
- [`Phalcon\Mvc\Model\Exceptions\PrimaryKeyAttributeNotSet`](#mvcmodelexceptionsprimarykeyattributenotset)
- [`Phalcon\Mvc\Model\Exceptions\PrimaryKeyRequired`](#mvcmodelexceptionsprimarykeyrequired)
- [`Phalcon\Mvc\Model\Exceptions\PropertyNotAccessible`](#mvcmodelexceptionspropertynotaccessible)
- [`Phalcon\Mvc\Model\Exceptions\RecordCannotRefresh`](#mvcmodelexceptionsrecordcannotrefresh)
- [`Phalcon\Mvc\Model\Exceptions\RecordNotPersisted`](#mvcmodelexceptionsrecordnotpersisted)
- [`Phalcon\Mvc\Model\Exceptions\ReferencedFieldsMismatch`](#mvcmodelexceptionsreferencedfieldsmismatch)
- [`Phalcon\Mvc\Model\Exceptions\RelationAliasMustBeString`](#mvcmodelexceptionsrelationaliasmustbestring)
- [`Phalcon\Mvc\Model\Exceptions\RelationNotDefined`](#mvcmodelexceptionsrelationnotdefined)
- [`Phalcon\Mvc\Model\Exceptions\RelationRequiresObjectOrArray`](#mvcmodelexceptionsrelationrequiresobjectorarray)
- [`Phalcon\Mvc\Model\Exceptions\ResultsetColumnNotInMap`](#mvcmodelexceptionsresultsetcolumnnotinmap)
- [`Phalcon\Mvc\Model\Exceptions\RowIsImmutable`](#mvcmodelexceptionsrowisimmutable)
- [`Phalcon\Mvc\Model\Exceptions\SnapshotsDisabled`](#mvcmodelexceptionssnapshotsdisabled)
- [`Phalcon\Mvc\Model\Exceptions\StaticMethodRequiresOneArgument`](#mvcmodelexceptionsstaticmethodrequiresoneargument)
- [`Phalcon\Mvc\Model\Exceptions\UnknownEagerRelation`](#mvcmodelexceptionsunknowneagerrelation)
- [`Phalcon\Mvc\Model\Exceptions\UnknownRelationType`](#mvcmodelexceptionsunknownrelationtype)
- [`Phalcon\Mvc\Model\Exceptions\UnsupportedEagerHydration`](#mvcmodelexceptionsunsupportedeagerhydration)
- [`Phalcon\Mvc\Model\Exceptions\UnsupportedEagerOption`](#mvcmodelexceptionsunsupportedeageroption)
- [`Phalcon\Mvc\Model\Exceptions\UnsupportedEagerResultset`](#mvcmodelexceptionsunsupportedeagerresultset)
- [`Phalcon\Mvc\Model\Exceptions\UpdateSnapshotDisabled`](#mvcmodelexceptionsupdatesnapshotdisabled)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\CannotObtainTableColumns`](#mvcmodelmetadataexceptionscannotobtaintablecolumns)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\ColumnMapNotArray`](#mvcmodelmetadataexceptionscolumnmapnotarray)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\ContainerRequired`](#mvcmodelmetadataexceptionscontainerrequired)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\CorruptedMetaData`](#mvcmodelmetadataexceptionscorruptedmetadata)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\InvalidContainer`](#mvcmodelmetadataexceptionsinvalidcontainer)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\InvalidMetaDataForModel`](#mvcmodelmetadataexceptionsinvalidmetadataformodel)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\MetaDataDirectoryNotWritable`](#mvcmodelmetadataexceptionsmetadatadirectorynotwritable)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\MetaDataStrategyFailed`](#mvcmodelmetadataexceptionsmetadatastrategyfailed)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\NoAnnotationsForClass`](#mvcmodelmetadataexceptionsnoannotationsforclass)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\NoPropertyAnnotationsForClass`](#mvcmodelmetadataexceptionsnopropertyannotationsforclass)
- [`Phalcon\Mvc\Model\MetaData\Exceptions\TableNotInDatabase`](#mvcmodelmetadataexceptionstablenotindatabase)
- [`Phalcon\Mvc\Model\Query\Exceptions\AmbiguousColumn`](#mvcmodelqueryexceptionsambiguouscolumn)
- [`Phalcon\Mvc\Model\Query\Exceptions\AmbiguousJoinRelation`](#mvcmodelqueryexceptionsambiguousjoinrelation)
- [`Phalcon\Mvc\Model\Query\Exceptions\BindParameterNotInPlaceholders`](#mvcmodelqueryexceptionsbindparameternotinplaceholders)
- [`Phalcon\Mvc\Model\Query\Exceptions\BindTypeRequiresArray`](#mvcmodelqueryexceptionsbindtyperequiresarray)
- [`Phalcon\Mvc\Model\Query\Exceptions\BindValueRequired`](#mvcmodelqueryexceptionsbindvaluerequired)
- [`Phalcon\Mvc\Model\Query\Exceptions\Builder\BuilderColumnNotInMap`](#mvcmodelqueryexceptionsbuilderbuildercolumnnotinmap)
- [`Phalcon\Mvc\Model\Query\Exceptions\Builder\BuilderConditionInvalid`](#mvcmodelqueryexceptionsbuilderbuilderconditioninvalid)
- [`Phalcon\Mvc\Model\Query\Exceptions\Builder\ModelRequired`](#mvcmodelqueryexceptionsbuildermodelrequired)
- [`Phalcon\Mvc\Model\Query\Exceptions\Builder\NoPrimaryKey`](#mvcmodelqueryexceptionsbuildernoprimarykey)
- [`Phalcon\Mvc\Model\Query\Exceptions\Builder\OperatorNotAvailable`](#mvcmodelqueryexceptionsbuilderoperatornotavailable)
- [`Phalcon\Mvc\Model\Query\Exceptions\ColumnNotInDomain`](#mvcmodelqueryexceptionscolumnnotindomain)
- [`Phalcon\Mvc\Model\Query\Exceptions\ColumnNotInSelectedModels`](#mvcmodelqueryexceptionscolumnnotinselectedmodels)
- [`Phalcon\Mvc\Model\Query\Exceptions\CorruptedAst`](#mvcmodelqueryexceptionscorruptedast)
- [`Phalcon\Mvc\Model\Query\Exceptions\CorruptedDeleteAst`](#mvcmodelqueryexceptionscorrupteddeleteast)
- [`Phalcon\Mvc\Model\Query\Exceptions\CorruptedInsertAst`](#mvcmodelqueryexceptionscorruptedinsertast)
- [`Phalcon\Mvc\Model\Query\Exceptions\CorruptedSelectAst`](#mvcmodelqueryexceptionscorruptedselectast)
- [`Phalcon\Mvc\Model\Query\Exceptions\CorruptedUpdateAst`](#mvcmodelqueryexceptionscorruptedupdateast)
- [`Phalcon\Mvc\Model\Query\Exceptions\DeleteMultipleNotSupported`](#mvcmodelqueryexceptionsdeletemultiplenotsupported)
- [`Phalcon\Mvc\Model\Query\Exceptions\DuplicateAlias`](#mvcmodelqueryexceptionsduplicatealias)
- [`Phalcon\Mvc\Model\Query\Exceptions\EmptyArrayPlaceholderValue`](#mvcmodelqueryexceptionsemptyarrayplaceholdervalue)
- [`Phalcon\Mvc\Model\Query\Exceptions\InsertColumnCountMismatch`](#mvcmodelqueryexceptionsinsertcolumncountmismatch)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidCachedResultset`](#mvcmodelqueryexceptionsinvalidcachedresultset)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidCachingOptions`](#mvcmodelqueryexceptionsinvalidcachingoptions)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidColumnDefinition`](#mvcmodelqueryexceptionsinvalidcolumndefinition)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidInjectedManager`](#mvcmodelqueryexceptionsinvalidinjectedmanager)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidInjectedMetadata`](#mvcmodelqueryexceptionsinvalidinjectedmetadata)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidQueryCacheService`](#mvcmodelqueryexceptionsinvalidquerycacheservice)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidResultsetClass`](#mvcmodelqueryexceptionsinvalidresultsetclass)
- [`Phalcon\Mvc\Model\Query\Exceptions\InvalidResultsetRowClass`](#mvcmodelqueryexceptionsinvalidresultsetrowclass)
- [`Phalcon\Mvc\Model\Query\Exceptions\JoinAliasAlreadyUsed`](#mvcmodelqueryexceptionsjoinaliasalreadyused)
- [`Phalcon\Mvc\Model\Query\Exceptions\JoinFieldCountMismatch`](#mvcmodelqueryexceptionsjoinfieldcountmismatch)
- [`Phalcon\Mvc\Model\Query\Exceptions\MissingCacheKey`](#mvcmodelqueryexceptionsmissingcachekey)
- [`Phalcon\Mvc\Model\Query\Exceptions\MissingMetaData`](#mvcmodelqueryexceptionsmissingmetadata)
- [`Phalcon\Mvc\Model\Query\Exceptions\MissingModelAttribute`](#mvcmodelqueryexceptionsmissingmodelattribute)
- [`Phalcon\Mvc\Model\Query\Exceptions\MissingModelsManager`](#mvcmodelqueryexceptionsmissingmodelsmanager)
- [`Phalcon\Mvc\Model\Query\Exceptions\MixedDatabaseSystems`](#mvcmodelqueryexceptionsmixeddatabasesystems)
- [`Phalcon\Mvc\Model\Query\Exceptions\ModelSourceNotFound`](#mvcmodelqueryexceptionsmodelsourcenotfound)
- [`Phalcon\Mvc\Model\Query\Exceptions\ModelsListNotLoaded`](#mvcmodelqueryexceptionsmodelslistnotloaded)
- [`Phalcon\Mvc\Model\Query\Exceptions\MultipleSqlStatementsNotSupported`](#mvcmodelqueryexceptionsmultiplesqlstatementsnotsupported)
- [`Phalcon\Mvc\Model\Query\Exceptions\NoModelForAlias`](#mvcmodelqueryexceptionsnomodelforalias)
- [`Phalcon\Mvc\Model\Query\Exceptions\PhqlColumnNotInMap`](#mvcmodelqueryexceptionsphqlcolumnnotinmap)
- [`Phalcon\Mvc\Model\Query\Exceptions\ReadConnectionMissing`](#mvcmodelqueryexceptionsreadconnectionmissing)
- [`Phalcon\Mvc\Model\Query\Exceptions\RelationshipNotFound`](#mvcmodelqueryexceptionsrelationshipnotfound)
- [`Phalcon\Mvc\Model\Query\Exceptions\ResultsetClassNotFound`](#mvcmodelqueryexceptionsresultsetclassnotfound)
- [`Phalcon\Mvc\Model\Query\Exceptions\ResultsetNonCacheable`](#mvcmodelqueryexceptionsresultsetnoncacheable)
- [`Phalcon\Mvc\Model\Query\Exceptions\ResultsetRowClassNotFound`](#mvcmodelqueryexceptionsresultsetrowclassnotfound)
- [`Phalcon\Mvc\Model\Query\Exceptions\UnknownBindType`](#mvcmodelqueryexceptionsunknownbindtype)
- [`Phalcon\Mvc\Model\Query\Exceptions\UnknownColumnType`](#mvcmodelqueryexceptionsunknowncolumntype)
- [`Phalcon\Mvc\Model\Query\Exceptions\UnknownJoinType`](#mvcmodelqueryexceptionsunknownjointype)
- [`Phalcon\Mvc\Model\Query\Exceptions\UnknownModelOrAlias`](#mvcmodelqueryexceptionsunknownmodeloralias)
- [`Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlExpression`](#mvcmodelqueryexceptionsunknownphqlexpression)
- [`Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlExpressionType`](#mvcmodelqueryexceptionsunknownphqlexpressiontype)
- [`Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlStatement`](#mvcmodelqueryexceptionsunknownphqlstatement)
- [`Phalcon\Mvc\Model\Query\Exceptions\UpdateMultipleNotSupported`](#mvcmodelqueryexceptionsupdatemultiplenotsupported)
- [`Phalcon\Mvc\Model\Query\Exceptions\WriteConnectionMissing`](#mvcmodelqueryexceptionswriteconnectionmissing)
- [`Phalcon\Mvc\Model\Transaction\Exception`](#mvcmodeltransactionexception)
- [`Phalcon\Mvc\Model\ValidationFailed`](#mvcmodelvalidationfailed)

</div>

## Mvc\Model\Exceptions\BelongsToRequiresObject

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/BelongsToRequiresObject.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\BelongsToRequiresObject`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsbelongstorequiresobject-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$className</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$relationName</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsbelongstorequiresobject-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $className,
string $relationName
);
```

## Mvc\Model\Exceptions\BindTypeNotDefined

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/BindTypeNotDefined.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\BindTypeNotDefined`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsbindtypenotdefined-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$column</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsbindtypenotdefined-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $column,
string $className
);
```

## Mvc\Model\Exceptions\CannotResolveAttribute

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/CannotResolveAttribute.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\CannotResolveAttribute`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionscannotresolveattribute-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$attribute</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionscannotresolveattribute-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $attribute,
string $className
);
```

## Mvc\Model\Exceptions\ColumnNotInMap

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ColumnNotInMap.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ColumnNotInMap`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionscolumnnotinmap-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$column</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionscolumnnotinmap-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $column,
string $className
);
```

## Mvc\Model\Exceptions\ColumnNotInTableColumns

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ColumnNotInTableColumns.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ColumnNotInTableColumns`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionscolumnnotintablecolumns-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$column</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionscolumnnotintablecolumns-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $column,
string $className
);
```

## Mvc\Model\Exceptions\ColumnNotInTableMap

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ColumnNotInTableMap.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ColumnNotInTableMap`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionscolumnnotintablemap-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$column</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionscolumnnotintablemap-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $column,
string $className
);
```

## Mvc\Model\Exceptions\CorruptColumnType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/CorruptColumnType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\CorruptColumnType`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionscorruptcolumntype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionscorruptcolumntype-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\CursorIsImmutable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/CursorIsImmutable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\CursorIsImmutable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionscursorisimmutable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionscursorisimmutable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\DataTypeNotDefined

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/DataTypeNotDefined.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\DataTypeNotDefined`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsdatatypenotdefined-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$column</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsdatatypenotdefined-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $column,
string $className
);
```

## Mvc\Model\Exceptions\EagerRowLimitExceeded

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/EagerRowLimitExceeded.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\EagerRowLimitExceeded`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionseagerrowlimitexceeded-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$rowCount</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$limit</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionseagerrowlimitexceeded-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $modelName,
int $rowCount,
int $limit
);
```

## Mvc\Model\Exceptions\HandlerMustImplementBindable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/HandlerMustImplementBindable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\HandlerMustImplementBindable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionshandlermustimplementbindable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionshandlermustimplementbindable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\IdentityNotInColumnMap

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/IdentityNotInColumnMap.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\IdentityNotInColumnMap`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsidentitynotincolumnmap-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$identityField</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsidentitynotincolumnmap-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $identityField,
string $className
);
```

## Mvc\Model\Exceptions\IdentityNotInTableColumns

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/IdentityNotInTableColumns.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\IdentityNotInTableColumns`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsidentitynotintablecolumns-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$identityField</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsidentitynotintablecolumns-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $identityField,
string $className
);
```

## Mvc\Model\Exceptions\IndexNotInCursor

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/IndexNotInCursor.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\IndexNotInCursor`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsindexnotincursor-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsindexnotincursor-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\IndexNotInRow

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/IndexNotInRow.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\IndexNotInRow`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsindexnotinrow-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsindexnotinrow-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidConnectionService

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidConnectionService.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidConnectionService`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidconnectionservice-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidconnectionservice-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidContainer

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidContainer.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidContainer`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidcontainer-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidcontainer-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidDumpResultKey

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidDumpResultKey.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidDumpResultKey`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvaliddumpresultkey-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvaliddumpresultkey-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\InvalidEagerParameter

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidEagerParameter.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidEagerParameter`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalideagerparameter-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalideagerparameter-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidEagerPath

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidEagerPath.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidEagerPath`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalideagerpath-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalideagerpath-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Mvc\Model\Exceptions\InvalidFindParameters

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidFindParameters.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidFindParameters`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidfindparameters-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidfindparameters-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\InvalidGetModelNameReturn

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidGetModelNameReturn.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidGetModelNameReturn`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidgetmodelnamereturn-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidgetmodelnamereturn-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidModelName

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidModelName.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidModelName`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidmodelname-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidmodelname-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidModelsManagerService

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidModelsManagerService.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidModelsManagerService`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidmodelsmanagerservice-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidmodelsmanagerservice-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\InvalidModelsMetadataService

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidModelsMetadataService.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidModelsMetadataService`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidmodelsmetadataservice-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidmodelsmetadataservice-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\InvalidResultsetCacheService

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidResultsetCacheService.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidResultsetCacheService`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidresultsetcacheservice-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidresultsetcacheservice-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidReturnedRecord

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidReturnedRecord.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidReturnedRecord`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidreturnedrecord-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidreturnedrecord-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\InvalidSerializationData

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/InvalidSerializationData.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\InvalidSerializationData`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsinvalidserializationdata-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsinvalidserializationdata-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\ManagerOrmServicesUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ManagerOrmServicesUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ManagerOrmServicesUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsmanagerormservicesunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsmanagerormservicesunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\MethodNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/MethodNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\MethodNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsmethodnotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelName</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsmethodnotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $method,
string $modelName
);
```

## Mvc\Model\Exceptions\MissingEagerKeyColumn

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/MissingEagerKeyColumn.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\MissingEagerKeyColumn`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsmissingeagerkeycolumn-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$column</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsmissingeagerkeycolumn-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $alias,
string $column
);
```

## Mvc\Model\Exceptions\MissingMethodName

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/MissingMethodName.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\MissingMethodName`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsmissingmethodname-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsmissingmethodname-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\MissingModelClassName

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/MissingModelClassName.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\MissingModelClassName`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsmissingmodelclassname-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$paramKey</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsmissingmodelclassname-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $paramKey );
```

## Mvc\Model\Exceptions\ModelCouldNotLoad

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ModelCouldNotLoad.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ModelCouldNotLoad`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsmodelcouldnotload-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsmodelcouldnotload-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $modelName );
```

## Mvc\Model\Exceptions\ModelOrmServicesUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ModelOrmServicesUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ModelOrmServicesUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsmodelormservicesunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsmodelormservicesunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\PrimaryKeyAttributeNotSet

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/PrimaryKeyAttributeNotSet.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\PrimaryKeyAttributeNotSet`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsprimarykeyattributenotset-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$attribute</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsprimarykeyattributenotset-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $attribute,
string $className
);
```

## Mvc\Model\Exceptions\PrimaryKeyRequired

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/PrimaryKeyRequired.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\PrimaryKeyRequired`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsprimarykeyrequired-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsprimarykeyrequired-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\PropertyNotAccessible

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/PropertyNotAccessible.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\PropertyNotAccessible`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionspropertynotaccessible-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$property</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionspropertynotaccessible-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $property,
string $className
);
```

## Mvc\Model\Exceptions\RecordCannotRefresh

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/RecordCannotRefresh.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\RecordCannotRefresh`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsrecordcannotrefresh-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsrecordcannotrefresh-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\RecordNotPersisted

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/RecordNotPersisted.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\RecordNotPersisted`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsrecordnotpersisted-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsrecordnotpersisted-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\ReferencedFieldsMismatch

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ReferencedFieldsMismatch.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ReferencedFieldsMismatch`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsreferencedfieldsmismatch-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$relationType</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$entityName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedEntity</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsreferencedfieldsmismatch-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $relationType,
string $entityName,
string $referencedEntity
);
```

## Mvc\Model\Exceptions\RelationAliasMustBeString

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/RelationAliasMustBeString.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\RelationAliasMustBeString`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsrelationaliasmustbestring-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$relationType</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$entityName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedEntity</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsrelationaliasmustbestring-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $relationType,
string $entityName,
string $referencedEntity
);
```

## Mvc\Model\Exceptions\RelationNotDefined

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/RelationNotDefined.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\RelationNotDefined`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsrelationnotdefined-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$className</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsrelationnotdefined-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $className,
string $alias
);
```

## Mvc\Model\Exceptions\RelationRequiresObjectOrArray

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/RelationRequiresObjectOrArray.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\RelationRequiresObjectOrArray`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsrelationrequiresobjectorarray-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$className</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$relationName</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsrelationrequiresobjectorarray-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $className,
string $relationName
);
```

## Mvc\Model\Exceptions\ResultsetColumnNotInMap

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/ResultsetColumnNotInMap.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\ResultsetColumnNotInMap`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsresultsetcolumnnotinmap-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsresultsetcolumnnotinmap-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $key );
```

## Mvc\Model\Exceptions\RowIsImmutable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/RowIsImmutable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\RowIsImmutable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsrowisimmutable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsrowisimmutable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\SnapshotsDisabled

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/SnapshotsDisabled.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\SnapshotsDisabled`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionssnapshotsdisabled-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionssnapshotsdisabled-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\StaticMethodRequiresOneArgument

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/StaticMethodRequiresOneArgument.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\StaticMethodRequiresOneArgument`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsstaticmethodrequiresoneargument-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$method</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsstaticmethodrequiresoneargument-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $method,
string $className
);
```

## Mvc\Model\Exceptions\UnknownEagerRelation

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/UnknownEagerRelation.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\UnknownEagerRelation`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsunknowneagerrelation-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsunknowneagerrelation-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $modelName,
string $alias
);
```

## Mvc\Model\Exceptions\UnknownRelationType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/UnknownRelationType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\UnknownRelationType`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsunknownrelationtype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsunknownrelationtype-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\UnsupportedEagerHydration

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/UnsupportedEagerHydration.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\UnsupportedEagerHydration`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsunsupportedeagerhydration-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsunsupportedeagerhydration-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Exceptions\UnsupportedEagerOption

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/UnsupportedEagerOption.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\UnsupportedEagerOption`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsunsupportedeageroption-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$option</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsunsupportedeageroption-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $option );
```

## Mvc\Model\Exceptions\UnsupportedEagerResultset

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/UnsupportedEagerResultset.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\UnsupportedEagerResultset`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsunsupportedeagerresultset-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsunsupportedeagerresultset-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Exceptions\UpdateSnapshotDisabled

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Exceptions/UpdateSnapshotDisabled.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Exceptions\UpdateSnapshotDisabled`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelexceptionsupdatesnapshotdisabled-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelexceptionsupdatesnapshotdisabled-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Hydration\CaseInsensitiveColumnMap

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Hydration/CaseInsensitiveColumnMap.zep">Source on GitHub</a>

<div class="api-tree">

- **`Phalcon\Mvc\Model\Hydration\CaseInsensitiveColumnMap`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelhydrationcaseinsensitivecolumnmap-caseinsensitivecolumnmap">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">caseInsensitiveColumnMap</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$key</span></span>)</code>
<span class="desc">Attempts to find key case-insensitively</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelhydrationcaseinsensitivecolumnmap-caseinsensitivecolumnmap"><code>caseInsensitiveColumnMap()</code></h4>

```php
public static function caseInsensitiveColumnMap(
mixed $columnMap,
mixed $key
): string;
```

Attempts to find key case-insensitively

## Mvc\Model\Hydration\CloneResultMapHydrate

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Hydration/CloneResultMapHydrate.zep">Source on GitHub</a>

<div class="api-tree">

- **`Phalcon\Mvc\Model\Hydration\CloneResultMapHydrate`**

</div>

__Uses__ `Phalcon\Mvc\Model` · `Phalcon\Mvc\Model\Exceptions\ColumnNotInMap` · `Phalcon\Mvc\Model\Resultset` · `Phalcon\Support\Settings`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelhydrationcloneresultmaphydrate-cloneresultmaphydrate">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">cloneResultMapHydrate</span>(<span class="prm"><span class="st">array</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$hydrationMode</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$calledClass</span><span class="sm"> = &quot;Phalcon\\Mvc\\Model&quot;</span></span>)</code>
<span class="desc">Returns an hydrated result based on the data and the column map</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelhydrationcloneresultmaphydrate-cloneresultmaphydrate"><code>cloneResultMapHydrate()</code></h4>

```php
public static function cloneResultMapHydrate(
array $data,
mixed $columnMap,
int $hydrationMode,
string $calledClass = "Phalcon\\Mvc\\Model"
);
```

Returns an hydrated result based on the data and the column map

## Mvc\Model\Manager

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Manager.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Manager

This components controls the initialization of models, keeping record of
relations between the different models of the application.

A ModelsManager is injected to a model via a Dependency Injector/Services
Container such as Phalcon\Di\Di.

```php
use Phalcon\Di\Di;
use Phalcon\Mvc\Model\Manager as ModelsManager;

$di = new Di();

$di->set(
"modelsManager",
function() {
    return new ModelsManager();
}
);

$invoice = new Invoices($di);
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Manager`** - implements [`Phalcon\Mvc\Model\ManagerInterface`](#mvcmodelmanagerinterface), [`Phalcon\Di\InjectionAwareInterface`](/5.19/api/phalcon_di/#diinjectionawareinterface), [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface)

</div>

__Uses__ `Phalcon\Contracts\Mvc\Model\Relation\CacheKeyProvider` · `Phalcon\Db\Adapter\AdapterInterface` · `Phalcon\Di\DiInterface` · `Phalcon\Di\InjectionAwareInterface` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Exceptions\InvalidConnectionService` · `Phalcon\Mvc\Model\Exceptions\ManagerOrmServicesUnavailable` · `Phalcon\Mvc\Model\Exceptions\ModelCouldNotLoad` · `Phalcon\Mvc\Model\Exceptions\ReferencedFieldsMismatch` · `Phalcon\Mvc\Model\Exceptions\RelationAliasMustBeString` · `Phalcon\Mvc\Model\Exceptions\UnknownRelationType` · `Phalcon\Mvc\Model\Query\Builder` · `Phalcon\Mvc\Model\Query\BuilderInterface` · `Phalcon\Mvc\Model\Query\StatusInterface` · `Phalcon\Support\Settings` · `ReflectionClass` · `ReflectionProperty`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmanager-__destruct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__destruct</span>()</code>
<span class="desc">Destroys the current PHQL cache</span>
</a>
<a class="api-item" href="#mvcmodelmanager-addbehavior">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">addBehavior</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">BehaviorInterface</span> <span class="sv">$behavior</span></span>)</code>
<span class="desc">Binds a behavior to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-addbelongsto">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addBelongsTo</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a relation reverse many to one between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanager-addhasmany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasMany</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a relation 1-n between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanager-addhasmanytomany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasManyToMany</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setups a relation n-m between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanager-addhasone">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasOne</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a 1-1 relation between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanager-addhasonethrough">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasOneThrough</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setups a relation 1-1 between two models using an intermediate model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-clearreusableobjects">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">clearReusableObjects</span>()</code>
<span class="desc">Clears the internal reusable list</span>
</a>
<a class="api-item" href="#mvcmodelmanager-createbuilder">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">createBuilder</span>( <span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span> )</code>
<span class="desc">Creates a Phalcon\Mvc\Model\Query\Builder</span>
</a>
<a class="api-item" href="#mvcmodelmanager-createquery">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">createQuery</span>( <span class="st">string</span> <span class="sv">$phql</span> )</code>
<span class="desc">Creates a Phalcon\Mvc\Model\Query without execute it</span>
</a>
<a class="api-item" href="#mvcmodelmanager-executequery">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">executeQuery</span>(<span class="prm"><span class="st">string</span> <span class="sv">$phql</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$placeholders</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$types</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Creates a Phalcon\Mvc\Model\Query and execute it</span>
</a>
<a class="api-item" href="#mvcmodelmanager-existsbelongsto">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">existsBelongsTo</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a belongsTo relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-existshasmany">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">existsHasMany</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasMany relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-existshasmanytomany">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">existsHasManyToMany</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasManyToMany relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-existshasone">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">existsHasOne</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasOne relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-existshasonethrough">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">existsHasOneThrough</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasOneThrough relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getbelongsto">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getBelongsTo</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets all the belongsTo relations defined in a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getbelongstorecords">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface|bool</code>
<code class="sig"><span class="sf">getBelongsToRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Gets belongsTo related records from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getbuilder">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface|null</code>
<code class="sig"><span class="sf">getBuilder</span>()</code>
<span class="desc">Returns the newly created Phalcon\Mvc\Model\Query\Builder or null</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getConnectionService</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$connectionServices</span></span>)</code>
<span class="desc">Returns the connection service name used to read or write data related to</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getcustomeventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">EventsManagerInterface|null</code>
<code class="sig"><span class="sf">getCustomEventsManager</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns a custom events manager related to a model or null if there is</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getdi">
<code class="vis vis-public">public</code>
<code class="ret">DiInterface</code>
<code class="sig"><span class="sf">getDI</span>()</code>
<span class="desc">Returns the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelmanager-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">EventsManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvcmodelmanager-gethasmany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getHasMany</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasMany relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-gethasmanyrecords">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface|bool</code>
<code class="sig"><span class="sf">getHasManyRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Gets hasMany related records from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-gethasmanytomany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getHasManyToMany</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasManyToMany relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-gethasone">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getHasOne</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasOne relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-gethasoneandhasmany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]</code>
<code class="sig"><span class="sf">getHasOneAndHasMany</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasOne relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-gethasonerecords">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|bool</code>
<code class="sig"><span class="sf">getHasOneRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Gets belongsTo related records from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-gethasonethrough">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getHasOneThrough</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasOneThrough relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getlastinitialized">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sf">getLastInitialized</span>()</code>
<span class="desc">Get last initialized model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getlastquery">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">getLastQuery</span>()</code>
<span class="desc">Returns the last query created or executed in the models manager</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getmodelprefix">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModelPrefix</span>()</code>
<span class="desc">Returns the prefix for all model sources.</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getmodelschema">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getModelSchema</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the mapped schema for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getmodelsource">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModelSource</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the mapped source for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getreadconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getReadConnection</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection to read data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getReadConnectionService</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection service name used to read data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getrelationbyalias">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface|bool</code>
<code class="sig"><span class="sf">getRelationByAlias</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span></span>)</code>
<span class="desc">Returns a relation by its alias</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getrelationrecords">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getRelationRecords</span>(<span class="prm"><span class="st">RelationInterface</span> <span class="sv">$relation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Helper method to query records based on a relation definition</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getrelations">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]</code>
<code class="sig"><span class="sf">getRelations</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
<span class="desc">Query all the relationships defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getrelationsbetween">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|bool</code>
<code class="sig"><span class="sf">getRelationsBetween</span>(<span class="prm"><span class="st">string</span> <span class="sv">$first</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$second</span></span>)</code>
<span class="desc">Query the first relationship defined between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getreusablerecords">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getReusableRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span></span>)</code>
<span class="desc">Returns a reusable object from the internal list</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getwriteconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getWriteConnection</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection to write data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getWriteConnectionService</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection service name used to write data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-hasbelongsto">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasBelongsTo</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a belongsTo relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-hashasmany">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasMany</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasMany relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-hashasmanytomany">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasManyToMany</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasManyToMany relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-hashasone">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasOne</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasOne relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-hashasonethrough">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasOneThrough</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasOneThrough relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-initialize">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">initialize</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Initializes a model in the model manager</span>
</a>
<a class="api-item" href="#mvcmodelmanager-isinitialized">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isInitialized</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
<span class="desc">Check whether a model is already initialized</span>
</a>
<a class="api-item" href="#mvcmodelmanager-iskeepingsnapshots">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isKeepingSnapshots</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Checks if a model is keeping snapshots for the queried records</span>
</a>
<a class="api-item" href="#mvcmodelmanager-isusingdynamicupdate">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isUsingDynamicUpdate</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Checks if a model is using dynamic update instead of all-field update</span>
</a>
<a class="api-item" href="#mvcmodelmanager-isvisiblemodelproperty">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isVisibleModelProperty</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$property</span></span>)</code>
<span class="desc">Check whether a model property is declared as public.</span>
</a>
<a class="api-item" href="#mvcmodelmanager-keepsnapshots">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">keepSnapshots</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$keepSnapshots</span></span>)</code>
<span class="desc">Sets if a model must keep snapshots</span>
</a>
<a class="api-item" href="#mvcmodelmanager-load">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">load</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
<span class="desc">Loads a model throwing an exception if it does not exist</span>
</a>
<a class="api-item" href="#mvcmodelmanager-mergefindparameters">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">mergeFindParameters</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$findParamsOne</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$findParamsTwo</span></span>)</code>
<span class="desc">Merge two arrays of find parameters</span>
</a>
<a class="api-item" href="#mvcmodelmanager-missingmethod">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">missingMethod</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$eventName</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Dispatch an event to the listeners and behaviors</span>
</a>
<a class="api-item" href="#mvcmodelmanager-notifyevent">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">notifyEvent</span>(<span class="prm"><span class="st">string</span> <span class="sv">$eventName</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span></span>)</code>
<span class="desc">Receives events generated in the models and dispatches them to an</span>
</a>
<a class="api-item" href="#mvcmodelmanager-registerwrite">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">registerWrite</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Marks the model&#039;s write connection service as written-to for the</span>
</a>
<a class="api-item" href="#mvcmodelmanager-removebehavior">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">removeBehavior</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$behaviorClass</span></span>)</code>
<span class="desc">Removes a behavior from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-resetconnectionstate">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">resetConnectionState</span>()</code>
<span class="desc">Clears the per-request sticky write tracking. Call this between</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setConnectionService</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$connectionService</span></span>)</code>
<span class="desc">Sets both write and read connection service for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setcustomeventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setCustomEventsManager</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">EventsManagerInterface</span> <span class="sv">$eventsManager</span></span>)</code>
<span class="desc">Sets a custom events manager for a specific model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelmanager-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">EventsManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets a global events manager</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setmodelprefix">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setModelPrefix</span>( <span class="st">string</span> <span class="sv">$prefix</span> )</code>
<span class="desc">Sets the prefix for all model sources.</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setmodelschema">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setModelSchema</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$schema</span></span>)</code>
<span class="desc">Sets the mapped schema for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setmodelsource">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setModelSource</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$source</span></span>)</code>
<span class="desc">Sets the mapped source for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setReadConnectionService</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$connectionService</span></span>)</code>
<span class="desc">Sets read connection service for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setreusablerecords">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setReusableRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$records</span></span>)</code>
<span class="desc">Stores a reusable record in the internal list</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setsticky">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setSticky</span>( <span class="st">bool</span> <span class="sv">$sticky</span> )</code>
<span class="desc">Enables or disables sticky connections. When enabled, once a model has</span>
</a>
<a class="api-item" href="#mvcmodelmanager-setwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setWriteConnectionService</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$connectionService</span></span>)</code>
<span class="desc">Sets write connection service for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanager-usedynamicupdate">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">useDynamicUpdate</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$dynamicUpdate</span></span>)</code>
<span class="desc">Sets if a model must use dynamic update instead of the all-field update</span>
</a>
<a class="api-item" href="#mvcmodelmanager-getconnection">
<code class="vis vis-protected">protected</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getConnection</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$connectionServices</span></span>)</code>
<span class="desc">Returns the connection to read or write data related to a model</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$aliases</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$behaviors</span><span class="sm"> = []</span></code>
<span class="desc">Models&#039; behaviors</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$belongsTo</span><span class="sm"> = []</span></code>
<span class="desc">Belongs to relations</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$belongsToSingle</span><span class="sm"> = []</span></code>
<span class="desc">All the relationships by model</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">BuilderInterface|null</code>
<code class="sig"><span class="sv">$builder</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">DiInterface|null</code>
<code class="sig"><span class="sv">$container</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$customEventsManager</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$dirtyWriteServices</span><span class="sm"> = []</span></code>
<span class="desc">Write connection services that have been written to during the current request cycle. Used by the sticky mechanism to route reads to the write connection after a write.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$dynamicUpdate</span><span class="sm"> = []</span></code>
<span class="desc">Does the model use dynamic update, instead of updating all rows?</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">EventsManagerInterface|null</code>
<code class="sig"><span class="sv">$eventsManager</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasMany</span><span class="sm"> = []</span></code>
<span class="desc">Has many relations</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasManySingle</span><span class="sm"> = []</span></code>
<span class="desc">Has many relations by model</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasManyToMany</span><span class="sm"> = []</span></code>
<span class="desc">Has many-Through relations</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasManyToManySingle</span><span class="sm"> = []</span></code>
<span class="desc">Has many-Through relations by model</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasOne</span><span class="sm"> = []</span></code>
<span class="desc">Has one relations</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasOneSingle</span><span class="sm"> = []</span></code>
<span class="desc">Has one relations by model</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasOneThrough</span><span class="sm"> = []</span></code>
<span class="desc">Has one through relations</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hasOneThroughSingle</span><span class="sm"> = []</span></code>
<span class="desc">Has one through relations by model</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$initialized</span><span class="sm"> = []</span></code>
<span class="desc">Mark initialized models</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$keepSnapshots</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sv">$lastInitialized</span><span class="sm"> = null</span></code>
<span class="desc">Last model initialized</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">QueryInterface|null</code>
<code class="sig"><span class="sv">$lastQuery</span><span class="sm"> = null</span></code>
<span class="desc">Last query created/executed</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$modelVisibility</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$prefix</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$readConnectionServices</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$reusable</span><span class="sm"> = []</span></code>
<span class="desc">Stores a list of reusable instances</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$schemas</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$sources</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$sticky</span><span class="sm"> = false</span></code>
<span class="desc">Whether reads should stick to the write connection after a write has occurred during the current request cycle.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$writeConnectionServices</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 74</div>

<h4 id="mvcmodelmanager-__destruct"><code>__destruct()</code></h4>

```php
public function __destruct();
```

Destroys the current PHQL cache

<h4 id="mvcmodelmanager-addbehavior"><code>addBehavior()</code></h4>

```php
public function addBehavior(
ModelInterface $model,
BehaviorInterface $behavior
): void;
```

Binds a behavior to a model

<h4 id="mvcmodelmanager-addbelongsto"><code>addBelongsTo()</code></h4>

```php
public function addBelongsTo(
ModelInterface $model,
mixed $fields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setup a relation reverse many to one between two models

<h4 id="mvcmodelmanager-addhasmany"><code>addHasMany()</code></h4>

```php
public function addHasMany(
ModelInterface $model,
mixed $fields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setup a relation 1-n between two models

<h4 id="mvcmodelmanager-addhasmanytomany"><code>addHasManyToMany()</code></h4>

```php
public function addHasManyToMany(
ModelInterface $model,
mixed $fields,
string $intermediateModel,
mixed $intermediateFields,
mixed $intermediateReferencedFields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setups a relation n-m between two models

<h4 id="mvcmodelmanager-addhasone"><code>addHasOne()</code></h4>

```php
public function addHasOne(
ModelInterface $model,
mixed $fields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setup a 1-1 relation between two models

<h4 id="mvcmodelmanager-addhasonethrough"><code>addHasOneThrough()</code></h4>

```php
public function addHasOneThrough(
ModelInterface $model,
mixed $fields,
string $intermediateModel,
mixed $intermediateFields,
mixed $intermediateReferencedFields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setups a relation 1-1 between two models using an intermediate model

<h4 id="mvcmodelmanager-clearreusableobjects"><code>clearReusableObjects()</code></h4>

```php
public function clearReusableObjects(): void;
```

Clears the internal reusable list

<h4 id="mvcmodelmanager-createbuilder"><code>createBuilder()</code></h4>

```php
public function createBuilder( mixed $params = null ): BuilderInterface;
```

Creates a Phalcon\Mvc\Model\Query\Builder

<h4 id="mvcmodelmanager-createquery"><code>createQuery()</code></h4>

```php
public function createQuery( string $phql ): QueryInterface;
```

Creates a Phalcon\Mvc\Model\Query without execute it

<h4 id="mvcmodelmanager-executequery"><code>executeQuery()</code></h4>

```php
public function executeQuery(
string $phql,
mixed $placeholders = null,
mixed $types = null
): mixed;
```

Creates a Phalcon\Mvc\Model\Query and execute it

```php
$model = new Invoices();
$manager = $model->getModelsManager();

// \Phalcon\Mvc\Model\Resultset\Simple
$manager->executeQuery('SELECT * FROM Invoices');

// \Phalcon\Mvc\Model\Resultset\Complex
$manager->executeQuery('SELECT COUNT(inv_status_flag) FROM Invoices GROUP BY inv_status_flag');

// \Phalcon\Mvc\Model\Query\StatusInterface
$manager->executeQuery('INSERT INTO Invoices (inv_id) VALUES (1)');

// \Phalcon\Mvc\Model\Query\StatusInterface
$manager->executeQuery('UPDATE Invoices SET inv_id = 0 WHERE inv_id = :id:', ['id' => 1]);

// \Phalcon\Mvc\Model\Query\StatusInterface
$manager->executeQuery('DELETE FROM Invoices WHERE inv_id = :id:', ['id' => 1]);
```

<h4 id="mvcmodelmanager-existsbelongsto"><code>existsBelongsTo()</code></h4>

```php
public function existsBelongsTo(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a belongsTo relation with another model

<h4 id="mvcmodelmanager-existshasmany"><code>existsHasMany()</code></h4>

```php
public function existsHasMany(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasMany relation with another model

<h4 id="mvcmodelmanager-existshasmanytomany"><code>existsHasManyToMany()</code></h4>

```php
public function existsHasManyToMany(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasManyToMany relation with another model

<h4 id="mvcmodelmanager-existshasone"><code>existsHasOne()</code></h4>

```php
public function existsHasOne(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasOne relation with another model

<h4 id="mvcmodelmanager-existshasonethrough"><code>existsHasOneThrough()</code></h4>

```php
public function existsHasOneThrough(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasOneThrough relation with another model

<h4 id="mvcmodelmanager-getbelongsto"><code>getBelongsTo()</code></h4>

```php
public function getBelongsTo( ModelInterface $model ): RelationInterface[]|array;
```

Gets all the belongsTo relations defined in a model

```php
$relations = $modelsManager->getBelongsTo(
new Invoices()
);
```

<h4 id="mvcmodelmanager-getbelongstorecords"><code>getBelongsToRecords()</code></h4>

```php
public function getBelongsToRecords(
string $modelName,
string $modelRelation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
): ResultsetInterface|bool;
```

Gets belongsTo related records from a model

<h4 id="mvcmodelmanager-getbuilder"><code>getBuilder()</code></h4>

```php
public function getBuilder(): BuilderInterface|null;
```

Returns the newly created Phalcon\Mvc\Model\Query\Builder or null

<h4 id="mvcmodelmanager-getconnectionservice"><code>getConnectionService()</code></h4>

```php
public function getConnectionService(
ModelInterface $model,
array $connectionServices
): string;
```

Returns the connection service name used to read or write data related to
a model depending on the connection services

<h4 id="mvcmodelmanager-getcustomeventsmanager"><code>getCustomEventsManager()</code></h4>

```php
public function getCustomEventsManager( ModelInterface $model ): EventsManagerInterface|null;
```

Returns a custom events manager related to a model or null if there is
no related events manager

<h4 id="mvcmodelmanager-getdi"><code>getDI()</code></h4>

```php
public function getDI(): DiInterface;
```

Returns the DependencyInjector container

<h4 id="mvcmodelmanager-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): EventsManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvcmodelmanager-gethasmany"><code>getHasMany()</code></h4>

```php
public function getHasMany( ModelInterface $model ): RelationInterface[]|array;
```

Gets hasMany relations defined on a model

<h4 id="mvcmodelmanager-gethasmanyrecords"><code>getHasManyRecords()</code></h4>

```php
public function getHasManyRecords(
string $modelName,
string $modelRelation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
): ResultsetInterface|bool;
```

Gets hasMany related records from a model

<h4 id="mvcmodelmanager-gethasmanytomany"><code>getHasManyToMany()</code></h4>

```php
public function getHasManyToMany( ModelInterface $model ): RelationInterface[]|array;
```

Gets hasManyToMany relations defined on a model

<h4 id="mvcmodelmanager-gethasone"><code>getHasOne()</code></h4>

```php
public function getHasOne( ModelInterface $model ): array;
```

Gets hasOne relations defined on a model

<h4 id="mvcmodelmanager-gethasoneandhasmany"><code>getHasOneAndHasMany()</code></h4>

```php
public function getHasOneAndHasMany( ModelInterface $model ): RelationInterface[];
```

Gets hasOne relations defined on a model

<h4 id="mvcmodelmanager-gethasonerecords"><code>getHasOneRecords()</code></h4>

```php
public function getHasOneRecords(
string $modelName,
string $modelRelation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
): ModelInterface|bool;
```

Gets belongsTo related records from a model

<h4 id="mvcmodelmanager-gethasonethrough"><code>getHasOneThrough()</code></h4>

```php
public function getHasOneThrough( ModelInterface $model ): RelationInterface[]|array;
```

Gets hasOneThrough relations defined on a model

<h4 id="mvcmodelmanager-getlastinitialized"><code>getLastInitialized()</code></h4>

```php
public function getLastInitialized(): ModelInterface|null;
```

Get last initialized model

<h4 id="mvcmodelmanager-getlastquery"><code>getLastQuery()</code></h4>

```php
public function getLastQuery(): QueryInterface;
```

Returns the last query created or executed in the models manager

<h4 id="mvcmodelmanager-getmodelprefix"><code>getModelPrefix()</code></h4>

```php
public function getModelPrefix(): string;
```

Returns the prefix for all model sources.

<h4 id="mvcmodelmanager-getmodelschema"><code>getModelSchema()</code></h4>

```php
public function getModelSchema( ModelInterface $model ): string|null;
```

Returns the mapped schema for a model

<h4 id="mvcmodelmanager-getmodelsource"><code>getModelSource()</code></h4>

```php
public function getModelSource( ModelInterface $model ): string;
```

Returns the mapped source for a model

<h4 id="mvcmodelmanager-getreadconnection"><code>getReadConnection()</code></h4>

```php
public function getReadConnection( ModelInterface $model ): AdapterInterface;
```

Returns the connection to read data related to a model

<h4 id="mvcmodelmanager-getreadconnectionservice"><code>getReadConnectionService()</code></h4>

```php
public function getReadConnectionService( ModelInterface $model ): string;
```

Returns the connection service name used to read data related to a model

<h4 id="mvcmodelmanager-getrelationbyalias"><code>getRelationByAlias()</code></h4>

```php
public function getRelationByAlias(
string $modelName,
string $alias
): RelationInterface|bool;
```

Returns a relation by its alias

<h4 id="mvcmodelmanager-getrelationrecords"><code>getRelationRecords()</code></h4>

```php
public function getRelationRecords(
RelationInterface $relation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
);
```

Helper method to query records based on a relation definition

<h4 id="mvcmodelmanager-getrelations"><code>getRelations()</code></h4>

```php
public function getRelations( string $modelName ): RelationInterface[];
```

Query all the relationships defined on a model

<h4 id="mvcmodelmanager-getrelationsbetween"><code>getRelationsBetween()</code></h4>

```php
public function getRelationsBetween(
string $first,
string $second
): RelationInterface[]|bool;
```

Query the first relationship defined between two models

<h4 id="mvcmodelmanager-getreusablerecords"><code>getReusableRecords()</code></h4>

```php
public function getReusableRecords(
string $modelName,
string $key
);
```

Returns a reusable object from the internal list

<h4 id="mvcmodelmanager-getwriteconnection"><code>getWriteConnection()</code></h4>

```php
public function getWriteConnection( ModelInterface $model ): AdapterInterface;
```

Returns the connection to write data related to a model

<h4 id="mvcmodelmanager-getwriteconnectionservice"><code>getWriteConnectionService()</code></h4>

```php
public function getWriteConnectionService( ModelInterface $model ): string;
```

Returns the connection service name used to write data related to a model

<h4 id="mvcmodelmanager-hasbelongsto"><code>hasBelongsTo()</code></h4>

```php
public function hasBelongsTo(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a belongsTo relation with another model

<h4 id="mvcmodelmanager-hashasmany"><code>hasHasMany()</code></h4>

```php
public function hasHasMany(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasMany relation with another model

<h4 id="mvcmodelmanager-hashasmanytomany"><code>hasHasManyToMany()</code></h4>

```php
public function hasHasManyToMany(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasManyToMany relation with another model

<h4 id="mvcmodelmanager-hashasone"><code>hasHasOne()</code></h4>

```php
public function hasHasOne(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasOne relation with another model

<h4 id="mvcmodelmanager-hashasonethrough"><code>hasHasOneThrough()</code></h4>

```php
public function hasHasOneThrough(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasOneThrough relation with another model

<h4 id="mvcmodelmanager-initialize"><code>initialize()</code></h4>

```php
public function initialize( ModelInterface $model ): bool;
```

Initializes a model in the model manager

<h4 id="mvcmodelmanager-isinitialized"><code>isInitialized()</code></h4>

```php
public function isInitialized( string $className ): bool;
```

Check whether a model is already initialized

<h4 id="mvcmodelmanager-iskeepingsnapshots"><code>isKeepingSnapshots()</code></h4>

```php
public function isKeepingSnapshots( ModelInterface $model ): bool;
```

Checks if a model is keeping snapshots for the queried records

<h4 id="mvcmodelmanager-isusingdynamicupdate"><code>isUsingDynamicUpdate()</code></h4>

```php
public function isUsingDynamicUpdate( ModelInterface $model ): bool;
```

Checks if a model is using dynamic update instead of all-field update

<h4 id="mvcmodelmanager-isvisiblemodelproperty"><code>isVisibleModelProperty()</code></h4>

```php
final public function isVisibleModelProperty(
ModelInterface $model,
string $property
): bool;
```

Check whether a model property is declared as public.

```php
$isPublic = $manager->isVisibleModelProperty(
new Invoices(),
"name"
);
```

<h4 id="mvcmodelmanager-keepsnapshots"><code>keepSnapshots()</code></h4>

```php
public function keepSnapshots(
ModelInterface $model,
bool $keepSnapshots
): void;
```

Sets if a model must keep snapshots

<h4 id="mvcmodelmanager-load"><code>load()</code></h4>

```php
public function load( string $modelName ): ModelInterface;
```

Loads a model throwing an exception if it does not exist

<h4 id="mvcmodelmanager-mergefindparameters"><code>mergeFindParameters()</code></h4>

```php
final public static function mergeFindParameters(
mixed $findParamsOne,
mixed $findParamsTwo
): array;
```

Merge two arrays of find parameters

The order matters. Conditions coming from key 0 or "conditions" are
ANDed in argument order; `bind` and `bindTypes` are merged for the
second argument only and assigned outright for the first. Pass the
parameters whose bindings must survive as the second argument.

Static because it reads nothing but its arguments, and public so bulk
loaders can reuse the merge instead of duplicating these semantics.

<h4 id="mvcmodelmanager-missingmethod"><code>missingMethod()</code></h4>

```php
public function missingMethod(
ModelInterface $model,
string $eventName,
mixed $data
);
```

Dispatch an event to the listeners and behaviors
This method expects that the endpoint listeners/behaviors returns true
meaning that a least one was implemented

<h4 id="mvcmodelmanager-notifyevent"><code>notifyEvent()</code></h4>

```php
public function notifyEvent(
string $eventName,
ModelInterface $model
);
```

Receives events generated in the models and dispatches them to an
events-manager if available. Notify the behaviors that are listening in
the model

<h4 id="mvcmodelmanager-registerwrite"><code>registerWrite()</code></h4>

```php
public function registerWrite( ModelInterface $model ): void;
```

Marks the model's write connection service as written-to for the
current request cycle. Used by the sticky mechanism to route
subsequent reads to the write connection.

<h4 id="mvcmodelmanager-removebehavior"><code>removeBehavior()</code></h4>

```php
public function removeBehavior(
ModelInterface $model,
string $behaviorClass
): void;
```

Removes a behavior from a model

<h4 id="mvcmodelmanager-resetconnectionstate"><code>resetConnectionState()</code></h4>

```php
public function resetConnectionState(): void;
```

Clears the per-request sticky write tracking. Call this between
requests in long-running runtimes (e.g. Swoole, RoadRunner) where the
manager instance is reused across requests.

<h4 id="mvcmodelmanager-setconnectionservice"><code>setConnectionService()</code></h4>

```php
public function setConnectionService(
ModelInterface $model,
string $connectionService
): void;
```

Sets both write and read connection service for a model

<h4 id="mvcmodelmanager-setcustomeventsmanager"><code>setCustomEventsManager()</code></h4>

```php
public function setCustomEventsManager(
ModelInterface $model,
EventsManagerInterface $eventsManager
): void;
```

Sets a custom events manager for a specific model

<h4 id="mvcmodelmanager-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the DependencyInjector container

<h4 id="mvcmodelmanager-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( EventsManagerInterface $eventsManager ): void;
```

Sets a global events manager

<h4 id="mvcmodelmanager-setmodelprefix"><code>setModelPrefix()</code></h4>

```php
public function setModelPrefix( string $prefix ): void;
```

Sets the prefix for all model sources.

```php
use Phalcon\Mvc\Model\Manager;

$di->set(
"modelsManager",
function () {
    $modelsManager = new Manager();

    $modelsManager->setModelPrefix("wp_");

    return $modelsManager;
}
);

$invoices = new Invoices();

echo $invoices->getSource(); // wp_co_invoices
```

$param string $prefix

<h4 id="mvcmodelmanager-setmodelschema"><code>setModelSchema()</code></h4>

```php
public function setModelSchema(
ModelInterface $model,
string $schema
): void;
```

Sets the mapped schema for a model

<h4 id="mvcmodelmanager-setmodelsource"><code>setModelSource()</code></h4>

```php
public function setModelSource(
ModelInterface $model,
string $source
): void;
```

Sets the mapped source for a model

<h4 id="mvcmodelmanager-setreadconnectionservice"><code>setReadConnectionService()</code></h4>

```php
public function setReadConnectionService(
ModelInterface $model,
string $connectionService
): void;
```

Sets read connection service for a model

<h4 id="mvcmodelmanager-setreusablerecords"><code>setReusableRecords()</code></h4>

```php
public function setReusableRecords(
string $modelName,
string $key,
mixed $records
): void;
```

Stores a reusable record in the internal list

<h4 id="mvcmodelmanager-setsticky"><code>setSticky()</code></h4>

```php
public function setSticky( bool $sticky ): void;
```

Enables or disables sticky connections. When enabled, once a model has
written to its write connection during the current request cycle, any
further reads for that write service use the write connection.

<h4 id="mvcmodelmanager-setwriteconnectionservice"><code>setWriteConnectionService()</code></h4>

```php
public function setWriteConnectionService(
ModelInterface $model,
string $connectionService
): void;
```

Sets write connection service for a model

<h4 id="mvcmodelmanager-usedynamicupdate"><code>useDynamicUpdate()</code></h4>

```php
public function useDynamicUpdate(
ModelInterface $model,
bool $dynamicUpdate
): void;
```

Sets if a model must use dynamic update instead of the all-field update

<div class="api-group">Protected · 1</div>

<h4 id="mvcmodelmanager-getconnection"><code>getConnection()</code></h4>

```php
protected function getConnection(
ModelInterface $model,
array $connectionServices
): AdapterInterface;
```

Returns the connection to read or write data related to a model
depending on the connection services.

## Mvc\Model\ManagerInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/ManagerInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\ManagerInterface

Interface for Phalcon\Mvc\Model\Manager

<div class="api-tree">

- **`Phalcon\Mvc\Model\ManagerInterface`**

</div>

__Uses__ `Phalcon\Db\Adapter\AdapterInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Query\BuilderInterface` · `Phalcon\Mvc\Model\Query\StatusInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmanagerinterface-addbehavior">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">addBehavior</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">BehaviorInterface</span> <span class="sv">$behavior</span></span>)</code>
<span class="desc">Binds a behavior to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-addbelongsto">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addBelongsTo</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a relation reverse 1-1  between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-addhasmany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasMany</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a relation 1-n between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-addhasmanytomany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasManyToMany</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setups a relation n-m between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-addhasone">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasOne</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setup a 1-1 relation between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-addhasonethrough">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface</code>
<code class="sig"><span class="sf">addHasOneThrough</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Setups a 1-1 relation between two models using an intermediate table</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-clearreusableobjects">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">clearReusableObjects</span>()</code>
<span class="desc">Clears the internal reusable list</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-createbuilder">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">createBuilder</span>( <span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span> )</code>
<span class="desc">Creates a Phalcon\Mvc\Model\Query\Builder</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-createquery">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">createQuery</span>( <span class="st">string</span> <span class="sv">$phql</span> )</code>
<span class="desc">Creates a Phalcon\Mvc\Model\Query without execute it</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-executequery">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">executeQuery</span>(<span class="prm"><span class="st">string</span> <span class="sv">$phql</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$placeholders</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$types</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Creates a Phalcon\Mvc\Model\Query and execute it</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getbelongsto">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getBelongsTo</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets belongsTo relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getbelongstorecords">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface|bool</code>
<code class="sig"><span class="sf">getBelongsToRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Gets belongsTo related records from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getbuilder">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface|null</code>
<code class="sig"><span class="sf">getBuilder</span>()</code>
<span class="desc">Returns the newly created Phalcon\Mvc\Model\Query\Builder or null</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-gethasmany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getHasMany</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasMany relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-gethasmanyrecords">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface|bool</code>
<code class="sig"><span class="sf">getHasManyRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Gets hasMany related records from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-gethasmanytomany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getHasManyToMany</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasManyToMany relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-gethasone">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getHasOne</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasOne relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-gethasoneandhasmany">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]</code>
<code class="sig"><span class="sf">getHasOneAndHasMany</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasOne relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-gethasonerecords">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|bool</code>
<code class="sig"><span class="sf">getHasOneRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Gets hasOne related records from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-gethasonethrough">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|array</code>
<code class="sig"><span class="sf">getHasOneThrough</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Gets hasOneThrough relations defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getlastinitialized">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sf">getLastInitialized</span>()</code>
<span class="desc">Get last initialized model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getlastquery">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">getLastQuery</span>()</code>
<span class="desc">Returns the last query created or executed in the models manager</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getmodelschema">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getModelSchema</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the mapped schema for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getmodelsource">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModelSource</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the mapped source for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getreadconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getReadConnection</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection to read data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getReadConnectionService</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection service name used to read data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getrelationbyalias">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface|bool</code>
<code class="sig"><span class="sf">getRelationByAlias</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$alias</span></span>)</code>
<span class="desc">Returns a relation by its alias</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getrelationrecords">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getRelationRecords</span>(<span class="prm"><span class="st">RelationInterface</span> <span class="sv">$relation</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$record</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$parameters</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$method</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Helper method to query records based on a relation definition</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getrelations">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]</code>
<code class="sig"><span class="sf">getRelations</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
<span class="desc">Query all the relationships defined on a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getrelationsbetween">
<code class="vis vis-public">public</code>
<code class="ret">RelationInterface[]|bool</code>
<code class="sig"><span class="sf">getRelationsBetween</span>(<span class="prm"><span class="st">string</span> <span class="sv">$first</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$second</span></span>)</code>
<span class="desc">Query the relations between two models</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getreusablerecords">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getReusableRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span></span>)</code>
<span class="desc">Returns a reusable object from the internal list</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getwriteconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getWriteConnection</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection to write data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-getwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getWriteConnectionService</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the connection service name used to write data related to a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-hasbelongsto">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasBelongsTo</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a belongsTo relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-hashasmany">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasMany</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasMany relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-hashasmanytomany">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasManyToMany</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasManyToMany relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-hashasone">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasOne</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasOne relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-hashasonethrough">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasHasOneThrough</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelRelation</span></span>)</code>
<span class="desc">Checks whether a model has a hasOneThrough relation with another model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-initialize">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">initialize</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Initializes a model in the model manager</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-isinitialized">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isInitialized</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
<span class="desc">Check of a model is already initialized</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-iskeepingsnapshots">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isKeepingSnapshots</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Checks if a model is keeping snapshots for the queried records</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-isusingdynamicupdate">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isUsingDynamicUpdate</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Checks if a model is using dynamic update instead of all-field update</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-isvisiblemodelproperty">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isVisibleModelProperty</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$property</span></span>)</code>
<span class="desc">Check whether a model property is declared as public.</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-keepsnapshots">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">keepSnapshots</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$keepSnapshots</span></span>)</code>
<span class="desc">Sets if a model must keep snapshots</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-load">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">load</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
<span class="desc">Loads a model throwing an exception if it does not exist</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-missingmethod">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">missingMethod</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$eventName</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Dispatch an event to the listeners and behaviors</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-notifyevent">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">notifyEvent</span>(<span class="prm"><span class="st">string</span> <span class="sv">$eventName</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span></span>)</code>
<span class="desc">Receives events generated in the models and dispatches them to an events-manager if available</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-registerwrite">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">registerWrite</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Marks the model&#039;s write connection service as written-to for the</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-removebehavior">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">removeBehavior</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$behaviorClass</span></span>)</code>
<span class="desc">Removes a behavior from a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-resetconnectionstate">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">resetConnectionState</span>()</code>
<span class="desc">Clears the per-request sticky write tracking</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-setconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setConnectionService</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$connectionService</span></span>)</code>
<span class="desc">Sets both write and read connection service for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-setmodelschema">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setModelSchema</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$schema</span></span>)</code>
<span class="desc">Sets the mapped schema for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-setmodelsource">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setModelSource</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$source</span></span>)</code>
<span class="desc">Sets the mapped source for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-setreadconnectionservice">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setReadConnectionService</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$connectionService</span></span>)</code>
<span class="desc">Sets read connection service for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-setreusablerecords">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setReusableRecords</span>(<span class="prm"><span class="st">string</span> <span class="sv">$modelName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$records</span></span>)</code>
<span class="desc">Stores a reusable record in the internal list</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-setsticky">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setSticky</span>( <span class="st">bool</span> <span class="sv">$sticky</span> )</code>
<span class="desc">Enables or disables sticky connections</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-setwriteconnectionservice">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setWriteConnectionService</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$connectionService</span></span>)</code>
<span class="desc">Sets write connection service for a model</span>
</a>
<a class="api-item" href="#mvcmodelmanagerinterface-usedynamicupdate">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">useDynamicUpdate</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$dynamicUpdate</span></span>)</code>
<span class="desc">Sets if a model must use dynamic update instead of the all-field update</span>
</a>
</div>

### Methods

<div class="api-group">Public · 58</div>

<h4 id="mvcmodelmanagerinterface-addbehavior"><code>addBehavior()</code></h4>

```php
public function addBehavior(
ModelInterface $model,
BehaviorInterface $behavior
): void;
```

Binds a behavior to a model

<h4 id="mvcmodelmanagerinterface-addbelongsto"><code>addBelongsTo()</code></h4>

```php
public function addBelongsTo(
ModelInterface $model,
mixed $fields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setup a relation reverse 1-1  between two models

<h4 id="mvcmodelmanagerinterface-addhasmany"><code>addHasMany()</code></h4>

```php
public function addHasMany(
ModelInterface $model,
mixed $fields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setup a relation 1-n between two models

<h4 id="mvcmodelmanagerinterface-addhasmanytomany"><code>addHasManyToMany()</code></h4>

```php
public function addHasManyToMany(
ModelInterface $model,
mixed $fields,
string $intermediateModel,
mixed $intermediateFields,
mixed $intermediateReferencedFields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setups a relation n-m between two models

<h4 id="mvcmodelmanagerinterface-addhasone"><code>addHasOne()</code></h4>

```php
public function addHasOne(
ModelInterface $model,
mixed $fields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setup a 1-1 relation between two models

<h4 id="mvcmodelmanagerinterface-addhasonethrough"><code>addHasOneThrough()</code></h4>

```php
public function addHasOneThrough(
ModelInterface $model,
mixed $fields,
string $intermediateModel,
mixed $intermediateFields,
mixed $intermediateReferencedFields,
string $referencedModel,
mixed $referencedFields,
array $options = []
): RelationInterface;
```

Setups a 1-1 relation between two models using an intermediate table

<h4 id="mvcmodelmanagerinterface-clearreusableobjects"><code>clearReusableObjects()</code></h4>

```php
public function clearReusableObjects(): void;
```

Clears the internal reusable list

<h4 id="mvcmodelmanagerinterface-createbuilder"><code>createBuilder()</code></h4>

```php
public function createBuilder( mixed $params = null ): BuilderInterface;
```

Creates a Phalcon\Mvc\Model\Query\Builder

<h4 id="mvcmodelmanagerinterface-createquery"><code>createQuery()</code></h4>

```php
public function createQuery( string $phql ): QueryInterface;
```

Creates a Phalcon\Mvc\Model\Query without execute it

<h4 id="mvcmodelmanagerinterface-executequery"><code>executeQuery()</code></h4>

```php
public function executeQuery(
string $phql,
mixed $placeholders = null,
mixed $types = null
): mixed;
```

Creates a Phalcon\Mvc\Model\Query and execute it

<h4 id="mvcmodelmanagerinterface-getbelongsto"><code>getBelongsTo()</code></h4>

```php
public function getBelongsTo( ModelInterface $model ): RelationInterface[]|array;
```

Gets belongsTo relations defined on a model

<h4 id="mvcmodelmanagerinterface-getbelongstorecords"><code>getBelongsToRecords()</code></h4>

```php
public function getBelongsToRecords(
string $modelName,
string $modelRelation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
): ResultsetInterface|bool;
```

Gets belongsTo related records from a model

<h4 id="mvcmodelmanagerinterface-getbuilder"><code>getBuilder()</code></h4>

```php
public function getBuilder(): BuilderInterface|null;
```

Returns the newly created Phalcon\Mvc\Model\Query\Builder or null

<h4 id="mvcmodelmanagerinterface-gethasmany"><code>getHasMany()</code></h4>

```php
public function getHasMany( ModelInterface $model ): RelationInterface[]|array;
```

Gets hasMany relations defined on a model

<h4 id="mvcmodelmanagerinterface-gethasmanyrecords"><code>getHasManyRecords()</code></h4>

```php
public function getHasManyRecords(
string $modelName,
string $modelRelation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
): ResultsetInterface|bool;
```

Gets hasMany related records from a model

<h4 id="mvcmodelmanagerinterface-gethasmanytomany"><code>getHasManyToMany()</code></h4>

```php
public function getHasManyToMany( ModelInterface $model ): RelationInterface[]|array;
```

Gets hasManyToMany relations defined on a model

<h4 id="mvcmodelmanagerinterface-gethasone"><code>getHasOne()</code></h4>

```php
public function getHasOne( ModelInterface $model ): RelationInterface[]|array;
```

Gets hasOne relations defined on a model

<h4 id="mvcmodelmanagerinterface-gethasoneandhasmany"><code>getHasOneAndHasMany()</code></h4>

```php
public function getHasOneAndHasMany( ModelInterface $model ): RelationInterface[];
```

Gets hasOne relations defined on a model

<h4 id="mvcmodelmanagerinterface-gethasonerecords"><code>getHasOneRecords()</code></h4>

```php
public function getHasOneRecords(
string $modelName,
string $modelRelation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
): ModelInterface|bool;
```

Gets hasOne related records from a model

<h4 id="mvcmodelmanagerinterface-gethasonethrough"><code>getHasOneThrough()</code></h4>

```php
public function getHasOneThrough( ModelInterface $model ): RelationInterface[]|array;
```

Gets hasOneThrough relations defined on a model

<h4 id="mvcmodelmanagerinterface-getlastinitialized"><code>getLastInitialized()</code></h4>

```php
public function getLastInitialized(): ModelInterface|null;
```

Get last initialized model

<h4 id="mvcmodelmanagerinterface-getlastquery"><code>getLastQuery()</code></h4>

```php
public function getLastQuery(): QueryInterface;
```

Returns the last query created or executed in the models manager

<h4 id="mvcmodelmanagerinterface-getmodelschema"><code>getModelSchema()</code></h4>

```php
public function getModelSchema( ModelInterface $model ): string|null;
```

Returns the mapped schema for a model

<h4 id="mvcmodelmanagerinterface-getmodelsource"><code>getModelSource()</code></h4>

```php
public function getModelSource( ModelInterface $model ): string;
```

Returns the mapped source for a model

<h4 id="mvcmodelmanagerinterface-getreadconnection"><code>getReadConnection()</code></h4>

```php
public function getReadConnection( ModelInterface $model ): AdapterInterface;
```

Returns the connection to read data related to a model

<h4 id="mvcmodelmanagerinterface-getreadconnectionservice"><code>getReadConnectionService()</code></h4>

```php
public function getReadConnectionService( ModelInterface $model ): string;
```

Returns the connection service name used to read data related to a model

<h4 id="mvcmodelmanagerinterface-getrelationbyalias"><code>getRelationByAlias()</code></h4>

```php
public function getRelationByAlias(
string $modelName,
string $alias
): RelationInterface|bool;
```

Returns a relation by its alias

<h4 id="mvcmodelmanagerinterface-getrelationrecords"><code>getRelationRecords()</code></h4>

```php
public function getRelationRecords(
RelationInterface $relation,
ModelInterface $record,
mixed $parameters = null,
string|null $method = null
);
```

Helper method to query records based on a relation definition

<h4 id="mvcmodelmanagerinterface-getrelations"><code>getRelations()</code></h4>

```php
public function getRelations( string $modelName ): RelationInterface[];
```

Query all the relationships defined on a model

<h4 id="mvcmodelmanagerinterface-getrelationsbetween"><code>getRelationsBetween()</code></h4>

```php
public function getRelationsBetween(
string $first,
string $second
): RelationInterface[]|bool;
```

Query the relations between two models

<h4 id="mvcmodelmanagerinterface-getreusablerecords"><code>getReusableRecords()</code></h4>

```php
public function getReusableRecords(
string $modelName,
string $key
);
```

Returns a reusable object from the internal list

<h4 id="mvcmodelmanagerinterface-getwriteconnection"><code>getWriteConnection()</code></h4>

```php
public function getWriteConnection( ModelInterface $model ): AdapterInterface;
```

Returns the connection to write data related to a model

<h4 id="mvcmodelmanagerinterface-getwriteconnectionservice"><code>getWriteConnectionService()</code></h4>

```php
public function getWriteConnectionService( ModelInterface $model ): string;
```

Returns the connection service name used to write data related to a model

<h4 id="mvcmodelmanagerinterface-hasbelongsto"><code>hasBelongsTo()</code></h4>

```php
public function hasBelongsTo(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a belongsTo relation with another model

<h4 id="mvcmodelmanagerinterface-hashasmany"><code>hasHasMany()</code></h4>

```php
public function hasHasMany(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasMany relation with another model

<h4 id="mvcmodelmanagerinterface-hashasmanytomany"><code>hasHasManyToMany()</code></h4>

```php
public function hasHasManyToMany(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasManyToMany relation with another model

<h4 id="mvcmodelmanagerinterface-hashasone"><code>hasHasOne()</code></h4>

```php
public function hasHasOne(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasOne relation with another model

<h4 id="mvcmodelmanagerinterface-hashasonethrough"><code>hasHasOneThrough()</code></h4>

```php
public function hasHasOneThrough(
string $modelName,
string $modelRelation
): bool;
```

Checks whether a model has a hasOneThrough relation with another model

<h4 id="mvcmodelmanagerinterface-initialize"><code>initialize()</code></h4>

```php
public function initialize( ModelInterface $model );
```

Initializes a model in the model manager

<h4 id="mvcmodelmanagerinterface-isinitialized"><code>isInitialized()</code></h4>

```php
public function isInitialized( string $className ): bool;
```

Check of a model is already initialized

<h4 id="mvcmodelmanagerinterface-iskeepingsnapshots"><code>isKeepingSnapshots()</code></h4>

```php
public function isKeepingSnapshots( ModelInterface $model ): bool;
```

Checks if a model is keeping snapshots for the queried records

<h4 id="mvcmodelmanagerinterface-isusingdynamicupdate"><code>isUsingDynamicUpdate()</code></h4>

```php
public function isUsingDynamicUpdate( ModelInterface $model ): bool;
```

Checks if a model is using dynamic update instead of all-field update

<h4 id="mvcmodelmanagerinterface-isvisiblemodelproperty"><code>isVisibleModelProperty()</code></h4>

```php
public function isVisibleModelProperty(
ModelInterface $model,
string $property
): bool;
```

Check whether a model property is declared as public.

```php
$isPublic = $manager->isVisibleModelProperty(
new Invoices(),
"name"
);
```

<h4 id="mvcmodelmanagerinterface-keepsnapshots"><code>keepSnapshots()</code></h4>

```php
public function keepSnapshots(
ModelInterface $model,
bool $keepSnapshots
): void;
```

Sets if a model must keep snapshots

<h4 id="mvcmodelmanagerinterface-load"><code>load()</code></h4>

```php
public function load( string $modelName ): ModelInterface;
```

Loads a model throwing an exception if it does not exist

<h4 id="mvcmodelmanagerinterface-missingmethod"><code>missingMethod()</code></h4>

```php
public function missingMethod(
ModelInterface $model,
string $eventName,
mixed $data
);
```

Dispatch an event to the listeners and behaviors
This method expects that the endpoint listeners/behaviors returns true
meaning that a least one is implemented

<h4 id="mvcmodelmanagerinterface-notifyevent"><code>notifyEvent()</code></h4>

```php
public function notifyEvent(
string $eventName,
ModelInterface $model
);
```

Receives events generated in the models and dispatches them to an events-manager if available
Notify the behaviors that are listening in the model

<h4 id="mvcmodelmanagerinterface-registerwrite"><code>registerWrite()</code></h4>

```php
public function registerWrite( ModelInterface $model ): void;
```

Marks the model's write connection service as written-to for the
current request cycle (sticky connections)

<h4 id="mvcmodelmanagerinterface-removebehavior"><code>removeBehavior()</code></h4>

```php
public function removeBehavior(
ModelInterface $model,
string $behaviorClass
): void;
```

Removes a behavior from a model

<h4 id="mvcmodelmanagerinterface-resetconnectionstate"><code>resetConnectionState()</code></h4>

```php
public function resetConnectionState(): void;
```

Clears the per-request sticky write tracking

<h4 id="mvcmodelmanagerinterface-setconnectionservice"><code>setConnectionService()</code></h4>

```php
public function setConnectionService(
ModelInterface $model,
string $connectionService
): void;
```

Sets both write and read connection service for a model

<h4 id="mvcmodelmanagerinterface-setmodelschema"><code>setModelSchema()</code></h4>

```php
public function setModelSchema(
ModelInterface $model,
string $schema
): void;
```

Sets the mapped schema for a model

<h4 id="mvcmodelmanagerinterface-setmodelsource"><code>setModelSource()</code></h4>

```php
public function setModelSource(
ModelInterface $model,
string $source
): void;
```

Sets the mapped source for a model

<h4 id="mvcmodelmanagerinterface-setreadconnectionservice"><code>setReadConnectionService()</code></h4>

```php
public function setReadConnectionService(
ModelInterface $model,
string $connectionService
): void;
```

Sets read connection service for a model

<h4 id="mvcmodelmanagerinterface-setreusablerecords"><code>setReusableRecords()</code></h4>

```php
public function setReusableRecords(
string $modelName,
string $key,
mixed $records
): void;
```

Stores a reusable record in the internal list

<h4 id="mvcmodelmanagerinterface-setsticky"><code>setSticky()</code></h4>

```php
public function setSticky( bool $sticky ): void;
```

Enables or disables sticky connections

<h4 id="mvcmodelmanagerinterface-setwriteconnectionservice"><code>setWriteConnectionService()</code></h4>

```php
public function setWriteConnectionService(
ModelInterface $model,
string $connectionService
);
```

Sets write connection service for a model

<h4 id="mvcmodelmanagerinterface-usedynamicupdate"><code>useDynamicUpdate()</code></h4>

```php
public function useDynamicUpdate(
ModelInterface $model,
bool $dynamicUpdate
): void;
```

Sets if a model must use dynamic update instead of the all-field update

## Mvc\Model\MetaData

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData.zep">Source on GitHub</a>

Phalcon\Mvc\Model\MetaData

Because Phalcon\Mvc\Model requires meta-data like field names, data types,
primary keys, etc. This component collect them and store for further
querying by Phalcon\Mvc\Model. Phalcon\Mvc\Model\MetaData can also use
adapters to store temporarily or permanently the meta-data.

A standard Phalcon\Mvc\Model\MetaData can be used to query model attributes:

```php
$metaData = new \Phalcon\Mvc\Model\MetaData\Memory();

$attributes = $metaData->getAttributes(
new Invoices()
);

print_r($attributes);
```

Each model's metadata is stored as two positional arrays addressed by two
constant families. Both families count from 0 and therefore share numeric
values, so a metadata array is only meaningful together with the family that
indexes it. The metadata cache adapters persist these arrays verbatim, so the
slot layout is a stored format: reordering a slot invalidates existing
caches.

Attribute metadata array (`MODELS_*` family):

| Slot | Constant                          | Contents                                        |
|------|-----------------------------------|-------------------------------------------------|
| 0    | `MODELS_ATTRIBUTES`               | All mapped attribute (column) names             |
| 1    | `MODELS_PRIMARY_KEY`              | Primary-key attributes                          |
| 2    | `MODELS_NON_PRIMARY_KEY`          | Non-primary-key attributes                      |
| 3    | `MODELS_NOT_NULL`                 | Attributes declared `NOT NULL`                  |
| 4    | `MODELS_DATA_TYPES`               | attribute => column data type                   |
| 5    | `MODELS_DATA_TYPES_NUMERIC`       | Attributes with a numeric type                  |
| 6    | `MODELS_DATE_AT`                  | Reserved (declared, currently unused)           |
| 7    | `MODELS_DATE_IN`                  | Reserved (declared, currently unused)           |
| 8    | `MODELS_IDENTITY_COLUMN`          | The auto-increment identity attribute           |
| 9    | `MODELS_DATA_TYPES_BIND`          | attribute => PDO bind type                      |
| 10   | `MODELS_AUTOMATIC_DEFAULT_INSERT` | Attributes omitted from `INSERT` (DB-defaulted) |
| 11   | `MODELS_AUTOMATIC_DEFAULT_UPDATE` | Attributes omitted from `UPDATE` (DB-defaulted) |
| 12   | `MODELS_DEFAULT_VALUES`           | attribute => default value                      |
| 13   | `MODELS_EMPTY_STRING_VALUES`      | Attributes that keep `''` instead of `NULL`     |

Column-map array (`MODELS_COLUMN_MAP` family), present only when a column map
is defined:

| Slot | Constant                    | Contents            |
|------|-----------------------------|---------------------|
| 0    | `MODELS_COLUMN_MAP`         | column => attribute |
| 1    | `MODELS_REVERSE_COLUMN_MAP` | attribute => column |

<div class="api-tree">

- **`Phalcon\Mvc\Model\MetaData`** - implements [`Phalcon\Di\InjectionAwareInterface`](/5.19/api/phalcon_di/#diinjectionawareinterface), [`Phalcon\Mvc\Model\MetaDataInterface`](#mvcmodelmetadatainterface)
- [`Phalcon\Mvc\Model\MetaData\Apcu`](#mvcmodelmetadataapcu)
- [`Phalcon\Mvc\Model\MetaData\Libmemcached`](#mvcmodelmetadatalibmemcached)
- [`Phalcon\Mvc\Model\MetaData\Memory`](#mvcmodelmetadatamemory)
- [`Phalcon\Mvc\Model\MetaData\Redis`](#mvcmodelmetadataredis)
- [`Phalcon\Mvc\Model\MetaData\Stream`](#mvcmodelmetadatastream)

</div>

__Uses__ `Phalcon\Cache\Adapter\AdapterInterface` · `Phalcon\Di\DiInterface` · `Phalcon\Di\InjectionAwareInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\MetaData\Exceptions\ContainerRequired` · `Phalcon\Mvc\Model\MetaData\Exceptions\CorruptedMetaData` · `Phalcon\Mvc\Model\MetaData\Exceptions\InvalidMetaDataForModel` · `Phalcon\Mvc\Model\MetaData\Exceptions\MetaDataStrategyFailed` · `Phalcon\Mvc\Model\MetaData\Strategy\Introspection` · `Phalcon\Mvc\Model\MetaData\Strategy\StrategyInterface` · `Phalcon\Support\Settings` · `Phalcon\Traits\Support\Helper\Arr\GetTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadata-getadapter">
<code class="vis vis-public">public</code>
<code class="ret">CacheAdapterInterface|null</code>
<code class="sig"><span class="sf">getAdapter</span>()</code>
<span class="desc">Return the internal cache adapter</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns table attributes names (fields)</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getautomaticcreateattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getAutomaticCreateAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes that must be ignored from the INSERT SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getautomaticupdateattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getAutomaticUpdateAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes that must be ignored from the UPDATE SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindTypes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes and their bind data types</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getcolumnmap">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">getColumnMap</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the column map if any</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getcolumnmapuniquekey">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getColumnMapUniqueKey</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns a ColumnMap Unique key for meta-data is created using className</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getdi">
<code class="vis vis-public">public</code>
<code class="ret">DiInterface</code>
<code class="sig"><span class="sf">getDI</span>()</code>
<span class="desc">Returns the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getdatatypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getDataTypes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes and their data types</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getdatatypesnumeric">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getDataTypesNumeric</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes which types are numerical</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getdefaultvalues">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getDefaultValues</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes (which have default values) and their default values</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getemptystringattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getEmptyStringAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes allow empty strings</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getidentityfield">
<code class="vis vis-public">public</code>
<code class="ret">bool|string|null</code>
<code class="sig"><span class="sf">getIdentityField</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the name of identity field (if one is present)</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getmetadatauniquekey">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getMetaDataUniqueKey</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns a MetaData Unique key for meta-data is created using className</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getmodeluuid">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getModelUUID</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$row</span></span>)</code>
<span class="desc">Returns the model UniqueID based on model and array row primary key(s) value(s)</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getnonprimarykeyattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getNonPrimaryKeyAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns an array of fields which are not part of the primary key</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getnotnullattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getNotNullAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns an array of not null attributes</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getprimarykeyattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getPrimaryKeyAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns an array of fields which are part of the primary key</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getreversecolumnmap">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">getReverseColumnMap</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the reverse column map if any</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-getstrategy">
<code class="vis vis-public">public</code>
<code class="ret">StrategyInterface</code>
<code class="sig"><span class="sf">getStrategy</span>()</code>
<span class="desc">Return the strategy to obtain the meta-data</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-hasattribute">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasAttribute</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$attribute</span></span>)</code>
<span class="desc">Check if a model has certain attribute</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-isempty">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isEmpty</span>()</code>
<span class="desc">Checks if the internal meta-data container is empty</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-modelequals">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">modelEquals</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$first</span>,</span><span class="prm"><span class="st">ModelInterface</span> <span class="sv">$other</span></span>)</code>
<span class="desc">Compares if two models are the same in memory</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-read">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">read</span>( <span class="st">mixed</span> <span class="sv">$key</span> )</code>
<span class="desc">Reads metadata from the adapter</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-readcolumnmap">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">readColumnMap</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Reads the ordered/reversed column map for certain model</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-readcolumnmapindex">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">readColumnMapIndex</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$index</span></span>)</code>
<span class="desc">Reads column-map information for certain model using a MODEL_* constant</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-readmetadata">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">readMetaData</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Reads the complete meta-data for certain model</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-readmetadataindex">
<code class="vis vis-public">public</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sf">readMetaDataIndex</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$index</span></span>)</code>
<span class="desc">Reads meta-data for certain model</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-reset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Resets internal meta-data in order to regenerate it</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-setautomaticcreateattributes">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setAutomaticCreateAttributes</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$attributes</span></span>)</code>
<span class="desc">Set the attributes that must be ignored from the INSERT SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-setautomaticupdateattributes">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setAutomaticUpdateAttributes</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$attributes</span></span>)</code>
<span class="desc">Set the attributes that must be ignored from the UPDATE SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-setemptystringattributes">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEmptyStringAttributes</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$attributes</span></span>)</code>
<span class="desc">Set the attributes that allow empty string values</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-setstrategy">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setStrategy</span>( <span class="st">StrategyInterface</span> <span class="sv">$strategy</span> )</code>
<span class="desc">Set the meta-data extraction strategy</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-write">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">write</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Writes the metadata to adapter</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-writemetadataindex">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">writeMetaDataIndex</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$index</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Writes meta-data for certain model using a MODEL_* constant</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-initialize">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">initialize</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$table</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$schema</span></span>)</code>
<span class="desc">Initialize old behavior for compatability</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-initializecolumnmap">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">initializeColumnMap</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$key</span></span>)</code>
<span class="desc">Initialize ColumnMap for a certain table</span>
</a>
<a class="api-item" href="#mvcmodelmetadata-initializemetadata">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">initializeMetaData</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$key</span></span>)</code>
<span class="desc">Initialize the metadata for certain table</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_ATTRIBUTES</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_AUTOMATIC_DEFAULT_INSERT</span><span class="sm"> = 10</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_AUTOMATIC_DEFAULT_UPDATE</span><span class="sm"> = 11</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_COLUMN_MAP</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_DATA_TYPES</span><span class="sm"> = 4</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_DATA_TYPES_BIND</span><span class="sm"> = 9</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_DATA_TYPES_NUMERIC</span><span class="sm"> = 5</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_DATE_AT</span><span class="sm"> = 6</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_DATE_IN</span><span class="sm"> = 7</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_DEFAULT_VALUES</span><span class="sm"> = 12</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_EMPTY_STRING_VALUES</span><span class="sm"> = 13</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_IDENTITY_COLUMN</span><span class="sm"> = 8</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_NON_PRIMARY_KEY</span><span class="sm"> = 2</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_NOT_NULL</span><span class="sm"> = 3</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_PRIMARY_KEY</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">MODELS_REVERSE_COLUMN_MAP</span><span class="sm"> = 1</span></code>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">CacheAdapterInterface|null</code>
<code class="sig"><span class="sv">$adapter</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$columnMap</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">DiInterface|null</code>
<code class="sig"><span class="sv">$container</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$metaData</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$pendingMetaDataWrites</span><span class="sm"> = []</span></code>
<span class="desc">Holds metadata index writes that arrived before the model&#039;s metadata was properly initialized (e.g. skipAttributes() called in a parent model&#039;s initialize() while the child&#039;s source had not yet been set).  Applied inside initializeMetaData() after the real schema is loaded.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">StrategyInterface|null</code>
<code class="sig"><span class="sv">$strategy</span><span class="sm"> = null</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 36</div>

<h4 id="mvcmodelmetadata-getadapter"><code>getAdapter()</code></h4>

```php
public function getAdapter(): CacheAdapterInterface|null;
```

Return the internal cache adapter

<h4 id="mvcmodelmetadata-getattributes"><code>getAttributes()</code></h4>

```php
public function getAttributes( ModelInterface $model ): array;
```

Returns table attributes names (fields)

```php
print_r(
$metaData->getAttributes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getautomaticcreateattributes"><code>getAutomaticCreateAttributes()</code></h4>

```php
public function getAutomaticCreateAttributes( ModelInterface $model ): array;
```

Returns attributes that must be ignored from the INSERT SQL generation

```php
print_r(
$metaData->getAutomaticCreateAttributes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getautomaticupdateattributes"><code>getAutomaticUpdateAttributes()</code></h4>

```php
public function getAutomaticUpdateAttributes( ModelInterface $model ): array;
```

Returns attributes that must be ignored from the UPDATE SQL generation

```php
print_r(
$metaData->getAutomaticUpdateAttributes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getbindtypes"><code>getBindTypes()</code></h4>

```php
public function getBindTypes( ModelInterface $model ): array;
```

Returns attributes and their bind data types

```php
print_r(
$metaData->getBindTypes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getcolumnmap"><code>getColumnMap()</code></h4>

```php
public function getColumnMap( ModelInterface $model ): array|null;
```

Returns the column map if any

```php
print_r(
$metaData->getColumnMap(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getcolumnmapuniquekey"><code>getColumnMapUniqueKey()</code></h4>

```php
public final function getColumnMapUniqueKey( ModelInterface $model ): string|null;
```

Returns a ColumnMap Unique key for meta-data is created using className

<h4 id="mvcmodelmetadata-getdi"><code>getDI()</code></h4>

```php
public function getDI(): DiInterface;
```

Returns the DependencyInjector container

<h4 id="mvcmodelmetadata-getdatatypes"><code>getDataTypes()</code></h4>

```php
public function getDataTypes( ModelInterface $model ): array;
```

Returns attributes and their data types

```php
print_r(
$metaData->getDataTypes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getdatatypesnumeric"><code>getDataTypesNumeric()</code></h4>

```php
public function getDataTypesNumeric( ModelInterface $model ): array;
```

Returns attributes which types are numerical

```php
print_r(
$metaData->getDataTypesNumeric(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getdefaultvalues"><code>getDefaultValues()</code></h4>

```php
public function getDefaultValues( ModelInterface $model ): array;
```

Returns attributes (which have default values) and their default values

```php
print_r(
$metaData->getDefaultValues(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getemptystringattributes"><code>getEmptyStringAttributes()</code></h4>

```php
public function getEmptyStringAttributes( ModelInterface $model ): array;
```

Returns attributes allow empty strings

```php
print_r(
$metaData->getEmptyStringAttributes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getidentityfield"><code>getIdentityField()</code></h4>

```php
public function getIdentityField( ModelInterface $model ): bool|string|null;
```

Returns the name of identity field (if one is present)

```php
print_r(
$metaData->getIdentityField(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getmetadatauniquekey"><code>getMetaDataUniqueKey()</code></h4>

```php
public final function getMetaDataUniqueKey( ModelInterface $model ): string|null;
```

Returns a MetaData Unique key for meta-data is created using className

<h4 id="mvcmodelmetadata-getmodeluuid"><code>getModelUUID()</code></h4>

```php
public function getModelUUID(
ModelInterface $model,
array $row
): string|null;
```

Returns the model UniqueID based on model and array row primary key(s) value(s)

<h4 id="mvcmodelmetadata-getnonprimarykeyattributes"><code>getNonPrimaryKeyAttributes()</code></h4>

```php
public function getNonPrimaryKeyAttributes( ModelInterface $model ): array;
```

Returns an array of fields which are not part of the primary key

```php
print_r(
$metaData->getNonPrimaryKeyAttributes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getnotnullattributes"><code>getNotNullAttributes()</code></h4>

```php
public function getNotNullAttributes( ModelInterface $model ): array;
```

Returns an array of not null attributes

```php
print_r(
$metaData->getNotNullAttributes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getprimarykeyattributes"><code>getPrimaryKeyAttributes()</code></h4>

```php
public function getPrimaryKeyAttributes( ModelInterface $model ): array;
```

Returns an array of fields which are part of the primary key

```php
print_r(
$metaData->getPrimaryKeyAttributes(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getreversecolumnmap"><code>getReverseColumnMap()</code></h4>

```php
public function getReverseColumnMap( ModelInterface $model ): array|null;
```

Returns the reverse column map if any

```php
print_r(
$metaData->getReverseColumnMap(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-getstrategy"><code>getStrategy()</code></h4>

```php
public function getStrategy(): StrategyInterface;
```

Return the strategy to obtain the meta-data

<h4 id="mvcmodelmetadata-hasattribute"><code>hasAttribute()</code></h4>

```php
public function hasAttribute(
ModelInterface $model,
string $attribute
): bool;
```

Check if a model has certain attribute

```php
var_dump(
$metaData->hasAttribute(
    new Invoices(),
    "name"
)
);
```

<h4 id="mvcmodelmetadata-isempty"><code>isEmpty()</code></h4>

```php
public function isEmpty(): bool;
```

Checks if the internal meta-data container is empty

```php
var_dump(
$metaData->isEmpty()
);
```

<h4 id="mvcmodelmetadata-modelequals"><code>modelEquals()</code></h4>

```php
public function modelEquals(
ModelInterface $first,
ModelInterface $other
): bool;
```

Compares if two models are the same in memory

<h4 id="mvcmodelmetadata-read"><code>read()</code></h4>

```php
public function read( mixed $key ): array|null;
```

Reads metadata from the adapter

<h4 id="mvcmodelmetadata-readcolumnmap"><code>readColumnMap()</code></h4>

```php
final public function readColumnMap( ModelInterface $model ): array|null;
```

Reads the ordered/reversed column map for certain model

```php
print_r(
$metaData->readColumnMap(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-readcolumnmapindex"><code>readColumnMapIndex()</code></h4>

```php
final public function readColumnMapIndex(
ModelInterface $model,
int $index
): array|null;
```

Reads column-map information for certain model using a MODEL_* constant

```php
print_r(
$metaData->readColumnMapIndex(
    new Invoices(),
    MetaData::MODELS_REVERSE_COLUMN_MAP
)
);
```

<h4 id="mvcmodelmetadata-readmetadata"><code>readMetaData()</code></h4>

```php
final public function readMetaData( ModelInterface $model ): array|null;
```

Reads the complete meta-data for certain model

```php
print_r(
$metaData->readMetaData(
    new Invoices()
)
);
```

<h4 id="mvcmodelmetadata-readmetadataindex"><code>readMetaDataIndex()</code></h4>

```php
final public function readMetaDataIndex(
ModelInterface $model,
int $index
): array|string|null;
```

Reads meta-data for certain model

```php
print_r(
$metaData->readMetaDataIndex(
    new Invoices(),
    0
)
);
```

<h4 id="mvcmodelmetadata-reset"><code>reset()</code></h4>

```php
public function reset(): void;
```

Resets internal meta-data in order to regenerate it

```php
$metaData->reset();
```

<h4 id="mvcmodelmetadata-setautomaticcreateattributes"><code>setAutomaticCreateAttributes()</code></h4>

```php
public function setAutomaticCreateAttributes(
ModelInterface $model,
array $attributes
): void;
```

Set the attributes that must be ignored from the INSERT SQL generation

```php
$metaData->setAutomaticCreateAttributes(
new Invoices(),
[
    "created_at" => true,
]
);
```

<h4 id="mvcmodelmetadata-setautomaticupdateattributes"><code>setAutomaticUpdateAttributes()</code></h4>

```php
public function setAutomaticUpdateAttributes(
ModelInterface $model,
array $attributes
): void;
```

Set the attributes that must be ignored from the UPDATE SQL generation

```php
$metaData->setAutomaticUpdateAttributes(
new Invoices(),
[
    "modified_at" => true,
]
);
```

<h4 id="mvcmodelmetadata-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the DependencyInjector container

<h4 id="mvcmodelmetadata-setemptystringattributes"><code>setEmptyStringAttributes()</code></h4>

```php
public function setEmptyStringAttributes(
ModelInterface $model,
array $attributes
): void;
```

Set the attributes that allow empty string values

```php
$metaData->setEmptyStringAttributes(
new Invoices(),
[
    "name" => true,
]
);
```

<h4 id="mvcmodelmetadata-setstrategy"><code>setStrategy()</code></h4>

```php
public function setStrategy( StrategyInterface $strategy ): void;
```

Set the meta-data extraction strategy

<h4 id="mvcmodelmetadata-write"><code>write()</code></h4>

```php
public function write(
string $key,
array $data
): void;
```

Writes the metadata to adapter

<h4 id="mvcmodelmetadata-writemetadataindex"><code>writeMetaDataIndex()</code></h4>

```php
final public function writeMetaDataIndex(
ModelInterface $model,
int $index,
mixed $data
): void;
```

Writes meta-data for certain model using a MODEL_* constant

```php
print_r(
$metaData->writeColumnMapIndex(
    new Invoices(),
    MetaData::MODELS_REVERSE_COLUMN_MAP,
    [
        "leName" => "name",
    ]
)
);
```

<div class="api-group">Protected · 3</div>

<h4 id="mvcmodelmetadata-initialize"><code>initialize()</code></h4>

```php
final protected function initialize(
ModelInterface $model,
mixed $key,
mixed $table,
mixed $schema
);
```

Initialize old behavior for compatability

<h4 id="mvcmodelmetadata-initializecolumnmap"><code>initializeColumnMap()</code></h4>

```php
final protected function initializeColumnMap(
ModelInterface $model,
mixed $key
): bool;
```

Initialize ColumnMap for a certain table

<h4 id="mvcmodelmetadata-initializemetadata"><code>initializeMetaData()</code></h4>

```php
final protected function initializeMetaData(
ModelInterface $model,
mixed $key
): bool;
```

Initialize the metadata for certain table

## Mvc\Model\MetaDataInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaDataInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\MetaDataInterface

Interface for Phalcon\Mvc\Model\MetaData

<div class="api-tree">

- **`Phalcon\Mvc\Model\MetaDataInterface`**

</div>

__Uses__ `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\MetaData\Strategy\StrategyInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadatainterface-getattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns table attributes names (fields)</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getautomaticcreateattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getAutomaticCreateAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes that must be ignored from the INSERT SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getautomaticupdateattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getAutomaticUpdateAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes that must be ignored from the UPDATE SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindTypes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes and their bind data types</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getcolumnmap">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">getColumnMap</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the column map if any</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getdatatypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getDataTypes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes and their data types</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getdatatypesnumeric">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getDataTypesNumeric</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes which types are numerical</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getdefaultvalues">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getDefaultValues</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes (which have default values) and their default values</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getemptystringattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getEmptyStringAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns attributes allow empty strings</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getidentityfield">
<code class="vis vis-public">public</code>
<code class="ret">bool|string|null</code>
<code class="sig"><span class="sf">getIdentityField</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the name of identity field (if one is present)</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getnonprimarykeyattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getNonPrimaryKeyAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns an array of fields which are not part of the primary key</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getnotnullattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getNotNullAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns an array of not null attributes</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getprimarykeyattributes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getPrimaryKeyAttributes</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns an array of fields which are part of the primary key</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getreversecolumnmap">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">getReverseColumnMap</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Returns the reverse column map if any</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-getstrategy">
<code class="vis vis-public">public</code>
<code class="ret">StrategyInterface</code>
<code class="sig"><span class="sf">getStrategy</span>()</code>
<span class="desc">Return the strategy to obtain the meta-data</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-hasattribute">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">hasAttribute</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$attribute</span></span>)</code>
<span class="desc">Check if a model has certain attribute</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-isempty">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isEmpty</span>()</code>
<span class="desc">Checks if the internal meta-data container is empty</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-read">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">read</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
<span class="desc">Reads meta-data from the adapter</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-readcolumnmap">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">readColumnMap</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Reads the ordered/reversed column map for certain model</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-readcolumnmapindex">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">readColumnMapIndex</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$index</span></span>)</code>
<span class="desc">Reads column-map information for certain model using a MODEL_* constant</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-readmetadata">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">readMetaData</span>( <span class="st">ModelInterface</span> <span class="sv">$model</span> )</code>
<span class="desc">Reads meta-data for certain model</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-readmetadataindex">
<code class="vis vis-public">public</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sf">readMetaDataIndex</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$index</span></span>)</code>
<span class="desc">Reads meta-data for certain model using a MODEL_* constant</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-reset">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Resets internal meta-data in order to regenerate it</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-setautomaticcreateattributes">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setAutomaticCreateAttributes</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$attributes</span></span>)</code>
<span class="desc">Set the attributes that must be ignored from the INSERT SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-setautomaticupdateattributes">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setAutomaticUpdateAttributes</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$attributes</span></span>)</code>
<span class="desc">Set the attributes that must be ignored from the UPDATE SQL generation</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-setemptystringattributes">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEmptyStringAttributes</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$attributes</span></span>)</code>
<span class="desc">Set the attributes that allow empty string values</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-setstrategy">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setStrategy</span>( <span class="st">StrategyInterface</span> <span class="sv">$strategy</span> )</code>
<span class="desc">Set the meta-data extraction strategy</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-write">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">write</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Writes meta-data to the adapter</span>
</a>
<a class="api-item" href="#mvcmodelmetadatainterface-writemetadataindex">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">writeMetaDataIndex</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$index</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Writes meta-data for certain model using a MODEL_* constant</span>
</a>
</div>

### Methods

<div class="api-group">Public · 29</div>

<h4 id="mvcmodelmetadatainterface-getattributes"><code>getAttributes()</code></h4>

```php
public function getAttributes( ModelInterface $model ): array;
```

Returns table attributes names (fields)

<h4 id="mvcmodelmetadatainterface-getautomaticcreateattributes"><code>getAutomaticCreateAttributes()</code></h4>

```php
public function getAutomaticCreateAttributes( ModelInterface $model ): array;
```

Returns attributes that must be ignored from the INSERT SQL generation

<h4 id="mvcmodelmetadatainterface-getautomaticupdateattributes"><code>getAutomaticUpdateAttributes()</code></h4>

```php
public function getAutomaticUpdateAttributes( ModelInterface $model ): array;
```

Returns attributes that must be ignored from the UPDATE SQL generation

<h4 id="mvcmodelmetadatainterface-getbindtypes"><code>getBindTypes()</code></h4>

```php
public function getBindTypes( ModelInterface $model ): array;
```

Returns attributes and their bind data types

<h4 id="mvcmodelmetadatainterface-getcolumnmap"><code>getColumnMap()</code></h4>

```php
public function getColumnMap( ModelInterface $model ): array|null;
```

Returns the column map if any

<h4 id="mvcmodelmetadatainterface-getdatatypes"><code>getDataTypes()</code></h4>

```php
public function getDataTypes( ModelInterface $model ): array;
```

Returns attributes and their data types

<h4 id="mvcmodelmetadatainterface-getdatatypesnumeric"><code>getDataTypesNumeric()</code></h4>

```php
public function getDataTypesNumeric( ModelInterface $model ): array;
```

Returns attributes which types are numerical

<h4 id="mvcmodelmetadatainterface-getdefaultvalues"><code>getDefaultValues()</code></h4>

```php
public function getDefaultValues( ModelInterface $model ): array;
```

Returns attributes (which have default values) and their default values

<h4 id="mvcmodelmetadatainterface-getemptystringattributes"><code>getEmptyStringAttributes()</code></h4>

```php
public function getEmptyStringAttributes( ModelInterface $model ): array;
```

Returns attributes allow empty strings

<h4 id="mvcmodelmetadatainterface-getidentityfield"><code>getIdentityField()</code></h4>

```php
public function getIdentityField( ModelInterface $model ): bool|string|null;
```

Returns the name of identity field (if one is present)

<h4 id="mvcmodelmetadatainterface-getnonprimarykeyattributes"><code>getNonPrimaryKeyAttributes()</code></h4>

```php
public function getNonPrimaryKeyAttributes( ModelInterface $model ): array;
```

Returns an array of fields which are not part of the primary key

<h4 id="mvcmodelmetadatainterface-getnotnullattributes"><code>getNotNullAttributes()</code></h4>

```php
public function getNotNullAttributes( ModelInterface $model ): array;
```

Returns an array of not null attributes

<h4 id="mvcmodelmetadatainterface-getprimarykeyattributes"><code>getPrimaryKeyAttributes()</code></h4>

```php
public function getPrimaryKeyAttributes( ModelInterface $model ): array;
```

Returns an array of fields which are part of the primary key

<h4 id="mvcmodelmetadatainterface-getreversecolumnmap"><code>getReverseColumnMap()</code></h4>

```php
public function getReverseColumnMap( ModelInterface $model ): array|null;
```

Returns the reverse column map if any

<h4 id="mvcmodelmetadatainterface-getstrategy"><code>getStrategy()</code></h4>

```php
public function getStrategy(): StrategyInterface;
```

Return the strategy to obtain the meta-data

<h4 id="mvcmodelmetadatainterface-hasattribute"><code>hasAttribute()</code></h4>

```php
public function hasAttribute(
ModelInterface $model,
string $attribute
): bool;
```

Check if a model has certain attribute

<h4 id="mvcmodelmetadatainterface-isempty"><code>isEmpty()</code></h4>

```php
public function isEmpty(): bool;
```

Checks if the internal meta-data container is empty

<h4 id="mvcmodelmetadatainterface-read"><code>read()</code></h4>

```php
public function read( string $key ): array|null;
```

Reads meta-data from the adapter

<h4 id="mvcmodelmetadatainterface-readcolumnmap"><code>readColumnMap()</code></h4>

```php
public function readColumnMap( ModelInterface $model ): array|null;
```

Reads the ordered/reversed column map for certain model

<h4 id="mvcmodelmetadatainterface-readcolumnmapindex"><code>readColumnMapIndex()</code></h4>

```php
public function readColumnMapIndex(
ModelInterface $model,
int $index
): array|null;
```

Reads column-map information for certain model using a MODEL_* constant

<h4 id="mvcmodelmetadatainterface-readmetadata"><code>readMetaData()</code></h4>

```php
public function readMetaData( ModelInterface $model ): array|null;
```

Reads meta-data for certain model

<h4 id="mvcmodelmetadatainterface-readmetadataindex"><code>readMetaDataIndex()</code></h4>

```php
public function readMetaDataIndex(
ModelInterface $model,
int $index
): array|string|null;
```

Reads meta-data for certain model using a MODEL_* constant

<h4 id="mvcmodelmetadatainterface-reset"><code>reset()</code></h4>

```php
public function reset();
```

Resets internal meta-data in order to regenerate it

<h4 id="mvcmodelmetadatainterface-setautomaticcreateattributes"><code>setAutomaticCreateAttributes()</code></h4>

```php
public function setAutomaticCreateAttributes(
ModelInterface $model,
array $attributes
);
```

Set the attributes that must be ignored from the INSERT SQL generation

<h4 id="mvcmodelmetadatainterface-setautomaticupdateattributes"><code>setAutomaticUpdateAttributes()</code></h4>

```php
public function setAutomaticUpdateAttributes(
ModelInterface $model,
array $attributes
);
```

Set the attributes that must be ignored from the UPDATE SQL generation

<h4 id="mvcmodelmetadatainterface-setemptystringattributes"><code>setEmptyStringAttributes()</code></h4>

```php
public function setEmptyStringAttributes(
ModelInterface $model,
array $attributes
): void;
```

Set the attributes that allow empty string values

<h4 id="mvcmodelmetadatainterface-setstrategy"><code>setStrategy()</code></h4>

```php
public function setStrategy( StrategyInterface $strategy );
```

Set the meta-data extraction strategy

<h4 id="mvcmodelmetadatainterface-write"><code>write()</code></h4>

```php
public function write(
string $key,
array $data
): void;
```

Writes meta-data to the adapter

<h4 id="mvcmodelmetadatainterface-writemetadataindex"><code>writeMetaDataIndex()</code></h4>

```php
public function writeMetaDataIndex(
ModelInterface $model,
int $index,
mixed $data
);
```

Writes meta-data for certain model using a MODEL_* constant

## Mvc\Model\MetaData\Apcu

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Apcu.zep">Source on GitHub</a>

Phalcon\Mvc\Model\MetaData\Apcu

Stores model meta-data in the APCu cache. Data will erased if the web server is restarted

By default meta-data is stored for 48 hours (172800 seconds)

You can query the meta-data by printing apcu_fetch('$PMM$') or apcu_fetch('$PMM$my-app-id')

```php
$metaData = new \Phalcon\Mvc\Model\MetaData\Apcu(
[
    "prefix"   => "my-app-id",
    "lifetime" => 86400,
]
);
```

<div class="api-tree">

- [`Phalcon\Mvc\Model\MetaData`](#mvcmodelmetadata)
- **`Phalcon\Mvc\Model\MetaData\Apcu`**

</div>

__Uses__ `Phalcon\Cache\AdapterFactory` · `Phalcon\Mvc\Model\MetaData`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataapcu-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">AdapterFactory</span> <span class="sv">$factory</span>,</span><span class="prm"><span class="st">array|null</span> <span class="sv">$options</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\MetaData\Apcu constructor</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataapcu-__construct"><code>__construct()</code></h4>

```php
public function __construct(
AdapterFactory $factory,
array|null $options = null
);
```

Phalcon\Mvc\Model\MetaData\Apcu constructor

## Mvc\Model\MetaData\Exceptions\CannotObtainTableColumns

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/CannotObtainTableColumns.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\CannotObtainTableColumns`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionscannotobtaintablecolumns-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$completeTable</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionscannotobtaintablecolumns-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $completeTable,
string $className
);
```

## Mvc\Model\MetaData\Exceptions\ColumnMapNotArray

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/ColumnMapNotArray.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\ColumnMapNotArray`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionscolumnmapnotarray-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionscolumnmapnotarray-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\MetaData\Exceptions\ContainerRequired

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/ContainerRequired.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\ContainerRequired`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionscontainerrequired-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionscontainerrequired-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\MetaData\Exceptions\CorruptedMetaData

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/CorruptedMetaData.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\CorruptedMetaData`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionscorruptedmetadata-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionscorruptedmetadata-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\MetaData\Exceptions\InvalidContainer

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/InvalidContainer.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\InvalidContainer`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionsinvalidcontainer-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionsinvalidcontainer-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\MetaData\Exceptions\InvalidMetaDataForModel

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/InvalidMetaDataForModel.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\InvalidMetaDataForModel`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionsinvalidmetadataformodel-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$modelName</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionsinvalidmetadataformodel-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $modelName );
```

## Mvc\Model\MetaData\Exceptions\MetaDataDirectoryNotWritable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/MetaDataDirectoryNotWritable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\MetaDataDirectoryNotWritable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionsmetadatadirectorynotwritable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionsmetadatadirectorynotwritable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\MetaData\Exceptions\MetaDataStrategyFailed

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/MetaDataStrategyFailed.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\MetaDataStrategyFailed`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionsmetadatastrategyfailed-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$message</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionsmetadatastrategyfailed-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $message );
```

## Mvc\Model\MetaData\Exceptions\NoAnnotationsForClass

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/NoAnnotationsForClass.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\NoAnnotationsForClass`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionsnoannotationsforclass-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionsnoannotationsforclass-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\MetaData\Exceptions\NoPropertyAnnotationsForClass

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/NoPropertyAnnotationsForClass.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\NoPropertyAnnotationsForClass`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionsnopropertyannotationsforclass-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionsnopropertyannotationsforclass-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\MetaData\Exceptions\TableNotInDatabase

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Exceptions/TableNotInDatabase.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\MetaData\Exceptions\TableNotInDatabase`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataexceptionstablenotindatabase-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$completeTable</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$className</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelmetadataexceptionstablenotindatabase-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $completeTable,
string $className
);
```

## Mvc\Model\MetaData\Libmemcached

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Libmemcached.zep">Source on GitHub</a>

Phalcon\Mvc\Model\MetaData\Libmemcached

Stores model meta-data in the Memcache.

By default meta-data is stored for 48 hours (172800 seconds)

<div class="api-tree">

- [`Phalcon\Mvc\Model\MetaData`](#mvcmodelmetadata)
- **`Phalcon\Mvc\Model\MetaData\Libmemcached`**

</div>

__Uses__ `Phalcon\Cache\AdapterFactory` · `Phalcon\Mvc\Model\MetaData`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadatalibmemcached-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">AdapterFactory</span> <span class="sv">$factory</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\MetaData\Libmemcached constructor</span>
</a>
<a class="api-item" href="#mvcmodelmetadatalibmemcached-reset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Flush Memcache data and resets internal meta-data in order to regenerate it</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmodelmetadatalibmemcached-__construct"><code>__construct()</code></h4>

```php
public function __construct(
AdapterFactory $factory,
array $options = []
);
```

Phalcon\Mvc\Model\MetaData\Libmemcached constructor

<h4 id="mvcmodelmetadatalibmemcached-reset"><code>reset()</code></h4>

```php
public function reset(): void;
```

Flush Memcache data and resets internal meta-data in order to regenerate it

## Mvc\Model\MetaData\Memory

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Memory.zep">Source on GitHub</a>

Phalcon\Mvc\Model\MetaData\Memory

Stores model meta-data in memory. Data will be erased when the request finishes

<div class="api-tree">

- [`Phalcon\Mvc\Model\MetaData`](#mvcmodelmetadata)
- **`Phalcon\Mvc\Model\MetaData\Memory`**

</div>

__Uses__ `Phalcon\Mvc\Model\MetaData`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadatamemory-read">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">read</span>( <span class="st">mixed</span> <span class="sv">$key</span> )</code>
<span class="desc">Reads the meta-data from temporal memory</span>
</a>
<a class="api-item" href="#mvcmodelmetadatamemory-write">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">write</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Writes the meta-data to temporal memory</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmodelmetadatamemory-read"><code>read()</code></h4>

```php
public function read( mixed $key ): array|null;
```

Reads the meta-data from temporal memory

<h4 id="mvcmodelmetadatamemory-write"><code>write()</code></h4>

```php
public function write(
mixed $key,
array $data
): void;
```

Writes the meta-data to temporal memory

## Mvc\Model\MetaData\Redis

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Redis.zep">Source on GitHub</a>

Phalcon\Mvc\Model\MetaData\Redis

Stores model meta-data in the Redis.

By default meta-data is stored for 48 hours (172800 seconds)

```php
use Phalcon\Mvc\Model\MetaData\Redis;

$metaData = new Redis(
[
    "host"       => "127.0.0.1",
    "port"       => 6379,
    "persistent" => 0,
    "lifetime"   => 172800,
    "index"      => 2,
]
);
```

<div class="api-tree">

- [`Phalcon\Mvc\Model\MetaData`](#mvcmodelmetadata)
- **`Phalcon\Mvc\Model\MetaData\Redis`**

</div>

__Uses__ `Phalcon\Cache\AdapterFactory` · `Phalcon\Mvc\Model\MetaData`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadataredis-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">AdapterFactory</span> <span class="sv">$factory</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\MetaData\Redis constructor</span>
</a>
<a class="api-item" href="#mvcmodelmetadataredis-reset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Flush Redis data and resets internal meta-data in order to regenerate it</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmodelmetadataredis-__construct"><code>__construct()</code></h4>

```php
public function __construct(
AdapterFactory $factory,
array $options = []
);
```

Phalcon\Mvc\Model\MetaData\Redis constructor

<h4 id="mvcmodelmetadataredis-reset"><code>reset()</code></h4>

```php
public function reset(): void;
```

Flush Redis data and resets internal meta-data in order to regenerate it

## Mvc\Model\MetaData\Strategy\Annotations

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Strategy/Annotations.zep">Source on GitHub</a>

<div class="api-tree">

- **`Phalcon\Mvc\Model\MetaData\Strategy\Annotations`** - implements [`Phalcon\Mvc\Model\MetaData\Strategy\StrategyInterface`](#mvcmodelmetadatastrategystrategyinterface)

</div>

__Uses__ `Phalcon\Db\Column` · `Phalcon\Di\DiInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\MetaData` · `Phalcon\Mvc\Model\MetaData\Exceptions\InvalidContainer` · `Phalcon\Mvc\Model\MetaData\Exceptions\NoAnnotationsForClass` · `Phalcon\Mvc\Model\MetaData\Exceptions\NoPropertyAnnotationsForClass`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadatastrategyannotations-getcolumnmaps">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getColumnMaps</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span></span>)</code>
<span class="desc">Read the model&#039;s column map, this can&#039;t be inferred</span>
</a>
<a class="api-item" href="#mvcmodelmetadatastrategyannotations-getmetadata">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMetaData</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span></span>)</code>
<span class="desc">The meta-data is obtained by reading the column descriptions from the database information schema</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmodelmetadatastrategyannotations-getcolumnmaps"><code>getColumnMaps()</code></h4>

```php
final public function getColumnMaps(
ModelInterface $model,
DiInterface $container
): array;
```

Read the model's column map, this can't be inferred

<h4 id="mvcmodelmetadatastrategyannotations-getmetadata"><code>getMetaData()</code></h4>

```php
final public function getMetaData(
ModelInterface $model,
DiInterface $container
): array;
```

The meta-data is obtained by reading the column descriptions from the database information schema

## Mvc\Model\MetaData\Strategy\Introspection

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Strategy/Introspection.zep">Source on GitHub</a>

Queries the table meta-data in order to introspect the model's metadata

<div class="api-tree">

- **`Phalcon\Mvc\Model\MetaData\Strategy\Introspection`** - implements [`Phalcon\Mvc\Model\MetaData\Strategy\StrategyInterface`](#mvcmodelmetadatastrategystrategyinterface)

</div>

__Uses__ `Phalcon\Db\Adapter\AdapterInterface` · `Phalcon\Di\DiInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\MetaData` · `Phalcon\Mvc\Model\MetaData\Exceptions\CannotObtainTableColumns` · `Phalcon\Mvc\Model\MetaData\Exceptions\ColumnMapNotArray` · `Phalcon\Mvc\Model\MetaData\Exceptions\TableNotInDatabase`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadatastrategyintrospection-getcolumnmaps">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getColumnMaps</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span></span>)</code>
<span class="desc">Read the model&#039;s column map, this can&#039;t be inferred</span>
</a>
<a class="api-item" href="#mvcmodelmetadatastrategyintrospection-getmetadata">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMetaData</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span></span>)</code>
<span class="desc">The meta-data is obtained by reading the column descriptions from the database information schema</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmodelmetadatastrategyintrospection-getcolumnmaps"><code>getColumnMaps()</code></h4>

```php
final public function getColumnMaps(
ModelInterface $model,
DiInterface $container
): array;
```

Read the model's column map, this can't be inferred

<h4 id="mvcmodelmetadatastrategyintrospection-getmetadata"><code>getMetaData()</code></h4>

```php
final public function getMetaData(
ModelInterface $model,
DiInterface $container
): array;
```

The meta-data is obtained by reading the column descriptions from the database information schema

## Mvc\Model\MetaData\Strategy\StrategyInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Strategy/StrategyInterface.zep">Source on GitHub</a>

<div class="api-tree">

- **`Phalcon\Mvc\Model\MetaData\Strategy\StrategyInterface`**

</div>

__Uses__ `Phalcon\Di\DiInterface` · `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadatastrategystrategyinterface-getcolumnmaps">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getColumnMaps</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span></span>)</code>
<span class="desc">Read the model&#039;s column map, this can&#039;t be inferred</span>
</a>
<a class="api-item" href="#mvcmodelmetadatastrategystrategyinterface-getmetadata">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMetaData</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span></span>)</code>
<span class="desc">The meta-data is obtained by reading the column descriptions from the database information schema</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmodelmetadatastrategystrategyinterface-getcolumnmaps"><code>getColumnMaps()</code></h4>

```php
public function getColumnMaps(
ModelInterface $model,
DiInterface $container
): array;
```

Read the model's column map, this can't be inferred

@todo Not implemented

<h4 id="mvcmodelmetadatastrategystrategyinterface-getmetadata"><code>getMetaData()</code></h4>

```php
public function getMetaData(
ModelInterface $model,
DiInterface $container
): array;
```

The meta-data is obtained by reading the column descriptions from the database information schema

## Mvc\Model\MetaData\Stream

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/MetaData/Stream.zep">Source on GitHub</a>

Phalcon\Mvc\Model\MetaData\Stream

Stores model meta-data in PHP files.

```php
$metaData = new \Phalcon\Mvc\Model\MetaData\Files(
[
    "metaDataDir" => "app/cache/metadata/",
]
);
```

<div class="api-tree">

- [`Phalcon\Mvc\Model\MetaData`](#mvcmodelmetadata)
- **`Phalcon\Mvc\Model\MetaData\Stream`**

</div>

__Uses__ `Phalcon\Mvc\Model\MetaData` · `Phalcon\Mvc\Model\MetaData\Exceptions\MetaDataDirectoryNotWritable` · `Phalcon\Support\Settings` · `Phalcon\Traits\Php\FileTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelmetadatastream-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span> )</code>
<span class="desc">Phalcon\Mvc\Model\MetaData\Files constructor</span>
</a>
<a class="api-item" href="#mvcmodelmetadatastream-read">
<code class="vis vis-public">public</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sf">read</span>( <span class="st">mixed</span> <span class="sv">$key</span> )</code>
<span class="desc">Reads meta-data from files</span>
</a>
<a class="api-item" href="#mvcmodelmetadatastream-write">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">write</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$data</span></span>)</code>
<span class="desc">Writes the meta-data to files</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$metaDataDir</span><span class="sm"> = &quot;./&quot;</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="mvcmodelmetadatastream-__construct"><code>__construct()</code></h4>

```php
public function __construct( array $options = [] );
```

Phalcon\Mvc\Model\MetaData\Files constructor

<h4 id="mvcmodelmetadatastream-read"><code>read()</code></h4>

```php
public function read( mixed $key ): array|null;
```

Reads meta-data from files

<h4 id="mvcmodelmetadatastream-write"><code>write()</code></h4>

```php
public function write(
mixed $key,
array $data
): void;
```

Writes the meta-data to files

## Mvc\Model\Query

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Query

This class takes a PHQL intermediate representation and executes it.

```php
$phql = "SELECT c.price*0.16 AS taxes, c.* FROM Cars AS c JOIN Brands AS b
     WHERE b.name = :name: ORDER BY c.name";

$result = $manager->executeQuery(
$phql,
[
    "name" => "Lamborghini",
]
);

foreach ($result as $row) {
echo "Name: ",  $row->cars->name, "\n";
echo "Price: ", $row->cars->price, "\n";
echo "Taxes: ", $row->taxes, "\n";
}

// with transaction
use Phalcon\Mvc\Model\Query;
use Phalcon\Mvc\Model\Transaction;

// $di needs to have the service "db" registered for this to work
$di = Phalcon\Di\FactoryDefault::getDefault();

$phql = 'SELECT * FROM Invoices';

$myTransaction = new Transaction($di);
$myTransaction->begin();

$newInvoice = new Invoices();
$newInvoice->setTransaction($myTransaction);
$newInvoice->inv_status_flag = 1;
$newInvoice->inv_title = "Test Invoice";
$newInvoice->inv_total = 100;
$newInvoice->save();

$queryWithTransaction = new Query($phql, $di);
$queryWithTransaction->setTransaction($myTransaction);

$resultWithEntries = $queryWithTransaction->execute();

$queryWithOutTransaction = new Query($phql, $di);
$resultWithOutEntries = $queryWithTransaction->execute();
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Query`** - implements [`Phalcon\Mvc\Model\QueryInterface`](#mvcmodelqueryinterface), [`Phalcon\Di\InjectionAwareInterface`](/5.19/api/phalcon_di/#diinjectionawareinterface)

</div>

__Uses__ `Phalcon\Cache\CacheInterface` · `Phalcon\Db\Adapter\AdapterInterface` · `Phalcon\Db\Column` · `Phalcon\Db\DialectInterface` · `Phalcon\Db\RawValue` · `Phalcon\Db\ResultInterface` · `Phalcon\Di\DiInterface` · `Phalcon\Di\InjectionAwareInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Query\Exceptions\AmbiguousColumn` · `Phalcon\Mvc\Model\Query\Exceptions\AmbiguousJoinRelation` · `Phalcon\Mvc\Model\Query\Exceptions\BindParameterNotInPlaceholders` · `Phalcon\Mvc\Model\Query\Exceptions\BindTypeRequiresArray` · `Phalcon\Mvc\Model\Query\Exceptions\BindValueRequired` · `Phalcon\Mvc\Model\Query\Exceptions\ColumnNotInDomain` · `Phalcon\Mvc\Model\Query\Exceptions\ColumnNotInSelectedModels` · `Phalcon\Mvc\Model\Query\Exceptions\CorruptedAst` · `Phalcon\Mvc\Model\Query\Exceptions\CorruptedDeleteAst` · `Phalcon\Mvc\Model\Query\Exceptions\CorruptedInsertAst` · `Phalcon\Mvc\Model\Query\Exceptions\CorruptedSelectAst` · `Phalcon\Mvc\Model\Query\Exceptions\CorruptedUpdateAst` · `Phalcon\Mvc\Model\Query\Exceptions\DeleteMultipleNotSupported` · `Phalcon\Mvc\Model\Query\Exceptions\DuplicateAlias` · `Phalcon\Mvc\Model\Query\Exceptions\EmptyArrayPlaceholderValue` · `Phalcon\Mvc\Model\Query\Exceptions\InsertColumnCountMismatch` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidCachedResultset` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidCachingOptions` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidColumnDefinition` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidInjectedManager` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidInjectedMetadata` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidQueryCacheService` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidResultsetClass` · `Phalcon\Mvc\Model\Query\Exceptions\InvalidResultsetRowClass` · `Phalcon\Mvc\Model\Query\Exceptions\JoinAliasAlreadyUsed` · `Phalcon\Mvc\Model\Query\Exceptions\JoinFieldCountMismatch` · `Phalcon\Mvc\Model\Query\Exceptions\MissingCacheKey` · `Phalcon\Mvc\Model\Query\Exceptions\MissingMetaData` · `Phalcon\Mvc\Model\Query\Exceptions\MissingModelAttribute` · `Phalcon\Mvc\Model\Query\Exceptions\MissingModelsManager` · `Phalcon\Mvc\Model\Query\Exceptions\MixedDatabaseSystems` · `Phalcon\Mvc\Model\Query\Exceptions\ModelSourceNotFound` · `Phalcon\Mvc\Model\Query\Exceptions\ModelsListNotLoaded` · `Phalcon\Mvc\Model\Query\Exceptions\MultipleSqlStatementsNotSupported` · `Phalcon\Mvc\Model\Query\Exceptions\NoModelForAlias` · `Phalcon\Mvc\Model\Query\Exceptions\PhqlColumnNotInMap` · `Phalcon\Mvc\Model\Query\Exceptions\ReadConnectionMissing` · `Phalcon\Mvc\Model\Query\Exceptions\RelationshipNotFound` · `Phalcon\Mvc\Model\Query\Exceptions\ResultsetClassNotFound` · `Phalcon\Mvc\Model\Query\Exceptions\ResultsetNonCacheable` · `Phalcon\Mvc\Model\Query\Exceptions\ResultsetRowClassNotFound` · `Phalcon\Mvc\Model\Query\Exceptions\UnknownBindType` · `Phalcon\Mvc\Model\Query\Exceptions\UnknownColumnType` · `Phalcon\Mvc\Model\Query\Exceptions\UnknownJoinType` · `Phalcon\Mvc\Model\Query\Exceptions\UnknownModelOrAlias` · `Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlExpression` · `Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlExpressionType` · `Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlStatement` · `Phalcon\Mvc\Model\Query\Exceptions\UpdateMultipleNotSupported` · `Phalcon\Mvc\Model\Query\Exceptions\WriteConnectionMissing` · `Phalcon\Mvc\Model\Query\Lang` · `Phalcon\Mvc\Model\Query\Status` · `Phalcon\Mvc\Model\Query\StatusInterface` · `Phalcon\Mvc\Model\ResultsetInterface` · `Phalcon\Mvc\Model\Resultset\Complex` · `Phalcon\Mvc\Model\Resultset\Simple` · `Phalcon\Support\Settings`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelquery-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string|null</span> <span class="sv">$phql</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Query constructor</span>
</a>
<a class="api-item" href="#mvcmodelquery-cache">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">cache</span>( <span class="st">array</span> <span class="sv">$cacheOptions</span> )</code>
<span class="desc">Sets the cache parameters of the query</span>
</a>
<a class="api-item" href="#mvcmodelquery-clean">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">clean</span>()</code>
<span class="desc">Destroys the internal PHQL cache</span>
</a>
<a class="api-item" href="#mvcmodelquery-execute">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">execute</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Executes a parsed PHQL statement</span>
</a>
<a class="api-item" href="#mvcmodelquery-getbindparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindParams</span>()</code>
<span class="desc">Returns default bind params</span>
</a>
<a class="api-item" href="#mvcmodelquery-getbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindTypes</span>()</code>
<span class="desc">Returns default bind types</span>
</a>
<a class="api-item" href="#mvcmodelquery-getcache">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getCache</span>()</code>
<span class="desc">Returns the current cache backend instance</span>
</a>
<a class="api-item" href="#mvcmodelquery-getcacheoptions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getCacheOptions</span>()</code>
<span class="desc">Returns the current cache options</span>
</a>
<a class="api-item" href="#mvcmodelquery-getdi">
<code class="vis vis-public">public</code>
<code class="ret">DiInterface</code>
<code class="sig"><span class="sf">getDI</span>()</code>
<span class="desc">Returns the dependency injection container</span>
</a>
<a class="api-item" href="#mvcmodelquery-getintermediate">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getIntermediate</span>()</code>
<span class="desc">Returns the intermediate representation of the PHQL statement</span>
</a>
<a class="api-item" href="#mvcmodelquery-getresultsetrowclass">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getResultsetRowClass</span>()</code>
<span class="desc">Returns the class that will be used to hydrate rows that are not mapped</span>
</a>
<a class="api-item" href="#mvcmodelquery-getsingleresult">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">getSingleResult</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Executes the query returning the first result</span>
</a>
<a class="api-item" href="#mvcmodelquery-getsql">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getSql</span>()</code>
<span class="desc">Returns an associative array with the SQL to be generated by the internal PHQL,</span>
</a>
<a class="api-item" href="#mvcmodelquery-gettransaction">
<code class="vis vis-public">public</code>
<code class="ret">TransactionInterface|null</code>
<code class="sig"><span class="sf">getTransaction</span>()</code>
</a>
<a class="api-item" href="#mvcmodelquery-gettype">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getType</span>()</code>
<span class="desc">Gets the type of PHQL statement executed</span>
</a>
<a class="api-item" href="#mvcmodelquery-getuniquerow">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">getUniqueRow</span>()</code>
<span class="desc">Check if the query is programmed to get only the first row in the</span>
</a>
<a class="api-item" href="#mvcmodelquery-parse">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">parse</span>()</code>
<span class="desc">Parses the intermediate code produced by Phalcon\Mvc\Model\Query\Lang</span>
</a>
<a class="api-item" href="#mvcmodelquery-setbindparams">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setBindParams</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind parameters</span>
</a>
<a class="api-item" href="#mvcmodelquery-setbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setBindTypes</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind parameters</span>
</a>
<a class="api-item" href="#mvcmodelquery-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the dependency injection container</span>
</a>
<a class="api-item" href="#mvcmodelquery-setintermediate">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setIntermediate</span>( <span class="st">array</span> <span class="sv">$intermediate</span> )</code>
<span class="desc">Allows to set the IR to be executed</span>
</a>
<a class="api-item" href="#mvcmodelquery-setresultsetrowclass">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setResultsetRowClass</span>( <span class="st">string</span> <span class="sv">$resultsetRowClass</span> )</code>
<span class="desc">Sets the class used to hydrate rows that are not mapped to a model</span>
</a>
<a class="api-item" href="#mvcmodelquery-setsharedlock">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setSharedLock</span>( <span class="st">bool</span> <span class="sv">$sharedLock</span><span class="sm"> = false</span> )</code>
<span class="desc">Set SHARED LOCK clause</span>
</a>
<a class="api-item" href="#mvcmodelquery-settransaction">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setTransaction</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">allows to wrap a transaction around all queries</span>
</a>
<a class="api-item" href="#mvcmodelquery-settype">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setType</span>( <span class="st">int</span> <span class="sv">$type</span> )</code>
<span class="desc">Sets the type of PHQL statement to be executed</span>
</a>
<a class="api-item" href="#mvcmodelquery-setuniquerow">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setUniqueRow</span>( <span class="st">bool</span> <span class="sv">$uniqueRow</span> )</code>
<span class="desc">Tells to the query if only the first row in the resultset must be</span>
</a>
<a class="api-item" href="#mvcmodelquery-executedelete">
<code class="vis vis-protected">protected</code>
<code class="ret">StatusInterface</code>
<code class="sig"><span class="sf">executeDelete</span>(<span class="prm"><span class="st">array</span> <span class="sv">$intermediate</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span></span>)</code>
<span class="desc">Executes the DELETE intermediate representation producing a</span>
</a>
<a class="api-item" href="#mvcmodelquery-executeinsert">
<code class="vis vis-protected">protected</code>
<code class="ret">StatusInterface</code>
<code class="sig"><span class="sf">executeInsert</span>(<span class="prm"><span class="st">array</span> <span class="sv">$intermediate</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span></span>)</code>
<span class="desc">Executes the INSERT intermediate representation producing a</span>
</a>
<a class="api-item" href="#mvcmodelquery-executeselect">
<code class="vis vis-protected">protected</code>
<code class="ret">ResultsetInterface|array</code>
<code class="sig"><span class="sf">executeSelect</span>(<span class="prm"><span class="st">array</span> <span class="sv">$intermediate</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$simulate</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Executes the SELECT intermediate representation producing a</span>
</a>
<a class="api-item" href="#mvcmodelquery-executeupdate">
<code class="vis vis-protected">protected</code>
<code class="ret">StatusInterface</code>
<code class="sig"><span class="sf">executeUpdate</span>(<span class="prm"><span class="st">array</span> <span class="sv">$intermediate</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span></span>)</code>
<span class="desc">Executes the UPDATE intermediate representation producing a</span>
</a>
<a class="api-item" href="#mvcmodelquery-getcallargument">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getCallArgument</span>( <span class="st">array</span> <span class="sv">$argument</span> )</code>
<span class="desc">Resolves an expression in a single call argument</span>
</a>
<a class="api-item" href="#mvcmodelquery-getcaseexpression">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getCaseExpression</span>( <span class="st">array</span> <span class="sv">$expr</span> )</code>
<span class="desc">Resolves an expression in a single call argument</span>
</a>
<a class="api-item" href="#mvcmodelquery-getexpression">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getExpression</span>(<span class="prm"><span class="st">array</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$quoting</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Resolves an expression from its intermediate code into an array</span>
</a>
<a class="api-item" href="#mvcmodelquery-getfunctioncall">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getFunctionCall</span>( <span class="st">array</span> <span class="sv">$expr</span> )</code>
<span class="desc">Resolves an expression in a single call argument</span>
</a>
<a class="api-item" href="#mvcmodelquery-getgroupclause">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getGroupClause</span>( <span class="st">array</span> <span class="sv">$group</span> )</code>
<span class="desc">Returns a processed group clause for a SELECT statement</span>
</a>
<a class="api-item" href="#mvcmodelquery-getjoin">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getJoin</span>(<span class="prm"><span class="st">ManagerInterface</span> <span class="sv">$manager</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$join</span></span>)</code>
<span class="desc">Resolves a JOIN clause checking if the associated models exist</span>
</a>
<a class="api-item" href="#mvcmodelquery-getjointype">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getJoinType</span>( <span class="st">array</span> <span class="sv">$join</span> )</code>
<span class="desc">Resolves a JOIN type</span>
</a>
<a class="api-item" href="#mvcmodelquery-getjoins">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getJoins</span>( <span class="st">array</span> <span class="sv">$select</span> )</code>
<span class="desc">Processes the JOINs in the query returning an internal representation for</span>
</a>
<a class="api-item" href="#mvcmodelquery-getlimitclause">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getLimitClause</span>( <span class="st">array</span> <span class="sv">$limitClause</span> )</code>
<span class="desc">Returns a processed limit clause for a SELECT statement</span>
</a>
<a class="api-item" href="#mvcmodelquery-getmultijoin">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMultiJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$joinType</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$joinSource</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelAlias</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$joinAlias</span>,</span><span class="prm"><span class="st">RelationInterface</span> <span class="sv">$relation</span></span>)</code>
<span class="desc">Resolves joins involving many-to-many relations</span>
</a>
<a class="api-item" href="#mvcmodelquery-getorderclause">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOrderClause</span>( <span class="st">mixed</span> <span class="sv">$order</span> )</code>
<span class="desc">Returns a processed order clause for a SELECT statement</span>
</a>
<a class="api-item" href="#mvcmodelquery-getqualified">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getQualified</span>( <span class="st">array</span> <span class="sv">$expr</span> )</code>
<span class="desc">Replaces the model&#039;s name to its source name in a qualified-name</span>
</a>
<a class="api-item" href="#mvcmodelquery-getreadconnection">
<code class="vis vis-protected">protected</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getReadConnection</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array|null</span> <span class="sv">$intermediate</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Gets the read connection from the model if there is no transaction set</span>
</a>
<a class="api-item" href="#mvcmodelquery-getrelatedrecords">
<code class="vis vis-protected">protected</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">getRelatedRecords</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$intermediate</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span></span>)</code>
<span class="desc">Query the records on which the UPDATE/DELETE operation will be done</span>
</a>
<a class="api-item" href="#mvcmodelquery-getselectcolumn">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getSelectColumn</span>( <span class="st">array</span> <span class="sv">$column</span> )</code>
<span class="desc">Resolves a column from its intermediate representation into an array</span>
</a>
<a class="api-item" href="#mvcmodelquery-getsinglejoin">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getSingleJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$joinType</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$joinSource</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$modelAlias</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$joinAlias</span>,</span><span class="prm"><span class="st">RelationInterface</span> <span class="sv">$relation</span></span>)</code>
<span class="desc">Resolves joins involving has-one/belongs-to/has-many relations</span>
</a>
<a class="api-item" href="#mvcmodelquery-gettable">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">getTable</span>(<span class="prm"><span class="st">ManagerInterface</span> <span class="sv">$manager</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$qualifiedName</span></span>)</code>
<span class="desc">Resolves a table in a SELECT statement checking if the model exists</span>
</a>
<a class="api-item" href="#mvcmodelquery-getwriteconnection">
<code class="vis vis-protected">protected</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getWriteConnection</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array|null</span> <span class="sv">$intermediate</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Gets the write connection from the model if there is no transaction</span>
</a>
<a class="api-item" href="#mvcmodelquery-preparedelete">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">prepareDelete</span>()</code>
<span class="desc">Analyzes a DELETE intermediate code and produces an array to be executed</span>
</a>
<a class="api-item" href="#mvcmodelquery-prepareinsert">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">prepareInsert</span>()</code>
<span class="desc">Analyzes an INSERT intermediate code and produces an array to be executed</span>
</a>
<a class="api-item" href="#mvcmodelquery-prepareselect">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">prepareSelect</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$ast</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Analyzes a SELECT intermediate code and produces an array to be executed later</span>
</a>
<a class="api-item" href="#mvcmodelquery-prepareupdate">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">prepareUpdate</span>()</code>
<span class="desc">Analyzes an UPDATE intermediate code and produces an array to be executed</span>
</a>
<a class="api-item" href="#mvcmodelquery-refreshschemasinintermediate">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">refreshSchemasInIntermediate</span>( <span class="st">array</span> <span class="sv">$irPhql</span> )</code>
<span class="desc">Refreshes the schema/source of every model referenced in a cached</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">TYPE_DELETE</span><span class="sm"> = 303</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">TYPE_INSERT</span><span class="sm"> = 306</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">TYPE_SELECT</span><span class="sm"> = 309</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">TYPE_UPDATE</span><span class="sm"> = 300</span></code>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$ast</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$bindParams</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$bindTypes</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sv">$cache</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sv">$cacheOptions</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">DiInterface|null</code>
<code class="sig"><span class="sv">$container</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$enableImplicitJoins</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$intermediate</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sv">$internalPhqlCache</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">\Phalcon\Mvc\Model\ManagerInterface|null</code>
<code class="sig"><span class="sv">$manager</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">\Phalcon\Mvc\Model\MetaDataInterface|null</code>
<code class="sig"><span class="sv">$metaData</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$models</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$modelsInstances</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$nestingLevel</span><span class="sm"> = -1</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$phql</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$resultsetRowClass</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$sharedLock</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$sqlAliases</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$sqlAliasesModels</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$sqlAliasesModelsInstances</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$sqlColumnAliases</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$sqlModelsAliases</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">TransactionInterface|null</code>
<code class="sig"><span class="sv">$transaction</span><span class="sm"> = null</span></code>
<span class="desc">TransactionInterface so that the query can wrap a transaction around batch updates and intermediate selects within the transaction. however if a model got a transaction set inside it will use the local transaction instead of this one</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int|null</code>
<code class="sig"><span class="sv">$type</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$uniqueRow</span><span class="sm"> = false</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 26</div>

<h4 id="mvcmodelquery-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string|null $phql = null,
DiInterface|null $container = null,
array $options = []
);
```

Phalcon\Mvc\Model\Query constructor

<h4 id="mvcmodelquery-cache"><code>cache()</code></h4>

```php
public function cache( array $cacheOptions ): QueryInterface;
```

Sets the cache parameters of the query

<h4 id="mvcmodelquery-clean"><code>clean()</code></h4>

```php
public static function clean(): void;
```

Destroys the internal PHQL cache

<h4 id="mvcmodelquery-execute"><code>execute()</code></h4>

```php
public function execute(
array $bindParams = [],
array $bindTypes = []
);
```

Executes a parsed PHQL statement

<h4 id="mvcmodelquery-getbindparams"><code>getBindParams()</code></h4>

```php
public function getBindParams(): array;
```

Returns default bind params

<h4 id="mvcmodelquery-getbindtypes"><code>getBindTypes()</code></h4>

```php
public function getBindTypes(): array;
```

Returns default bind types

<h4 id="mvcmodelquery-getcache"><code>getCache()</code></h4>

```php
public function getCache(): AdapterInterface;
```

Returns the current cache backend instance

<h4 id="mvcmodelquery-getcacheoptions"><code>getCacheOptions()</code></h4>

```php
public function getCacheOptions(): array;
```

Returns the current cache options

<h4 id="mvcmodelquery-getdi"><code>getDI()</code></h4>

```php
public function getDI(): DiInterface;
```

Returns the dependency injection container

<h4 id="mvcmodelquery-getintermediate"><code>getIntermediate()</code></h4>

```php
public function getIntermediate(): array;
```

Returns the intermediate representation of the PHQL statement

<h4 id="mvcmodelquery-getresultsetrowclass"><code>getResultsetRowClass()</code></h4>

```php
public function getResultsetRowClass(): string;
```

Returns the class that will be used to hydrate rows that are not mapped
to a model (custom columns/joins). An empty string means the default
Phalcon\Mvc\Model\Row is used.

<h4 id="mvcmodelquery-getsingleresult"><code>getSingleResult()</code></h4>

```php
public function getSingleResult(
array $bindParams = [],
array $bindTypes = []
): ModelInterface;
```

Executes the query returning the first result

<h4 id="mvcmodelquery-getsql"><code>getSql()</code></h4>

```php
public function getSql(): array;
```

Returns an associative array with the SQL to be generated by the internal PHQL,
and arrays with bound parameters and their types (only works in SELECT statements).

```php
[
'sql' => 'SELECT * FROM co_invoices WHERE inv_cst_id = :cst_id',
'bind' => ['cst_id' => 123],
'bindTypes => ['cst_id' => 1] // 1 corresponds to int
]
```

<h4 id="mvcmodelquery-gettransaction"><code>getTransaction()</code></h4>

```php
public function getTransaction(): TransactionInterface|null;
```

<h4 id="mvcmodelquery-gettype"><code>getType()</code></h4>

```php
public function getType(): int;
```

Gets the type of PHQL statement executed

<h4 id="mvcmodelquery-getuniquerow"><code>getUniqueRow()</code></h4>

```php
public function getUniqueRow(): bool;
```

Check if the query is programmed to get only the first row in the
resultset

<h4 id="mvcmodelquery-parse"><code>parse()</code></h4>

```php
public function parse(): array;
```

Parses the intermediate code produced by Phalcon\Mvc\Model\Query\Lang
generating another intermediate representation that could be executed by
Phalcon\Mvc\Model\Query

<h4 id="mvcmodelquery-setbindparams"><code>setBindParams()</code></h4>

```php
public function setBindParams(
array $bindParams,
bool $merge = false
): QueryInterface;
```

Set default bind parameters

<h4 id="mvcmodelquery-setbindtypes"><code>setBindTypes()</code></h4>

```php
public function setBindTypes(
array $bindTypes,
bool $merge = false
): QueryInterface;
```

Set default bind parameters

<h4 id="mvcmodelquery-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the dependency injection container

<h4 id="mvcmodelquery-setintermediate"><code>setIntermediate()</code></h4>

```php
public function setIntermediate( array $intermediate ): QueryInterface;
```

Allows to set the IR to be executed

<h4 id="mvcmodelquery-setresultsetrowclass"><code>setResultsetRowClass()</code></h4>

```php
public function setResultsetRowClass( string $resultsetRowClass ): QueryInterface;
```

Sets the class used to hydrate rows that are not mapped to a model
(custom columns/joins). The class must be a subclass of
Phalcon\Mvc\Model\Row.

<h4 id="mvcmodelquery-setsharedlock"><code>setSharedLock()</code></h4>

```php
public function setSharedLock( bool $sharedLock = false ): QueryInterface;
```

Set SHARED LOCK clause

<h4 id="mvcmodelquery-settransaction"><code>setTransaction()</code></h4>

```php
public function setTransaction( TransactionInterface $transaction ): QueryInterface;
```

allows to wrap a transaction around all queries

<h4 id="mvcmodelquery-settype"><code>setType()</code></h4>

```php
public function setType( int $type ): QueryInterface;
```

Sets the type of PHQL statement to be executed

<h4 id="mvcmodelquery-setuniquerow"><code>setUniqueRow()</code></h4>

```php
public function setUniqueRow( bool $uniqueRow ): QueryInterface;
```

Tells to the query if only the first row in the resultset must be
returned

<div class="api-group">Protected · 27</div>

<h4 id="mvcmodelquery-executedelete"><code>executeDelete()</code></h4>

```php
final protected function executeDelete(
array $intermediate,
array $bindParams,
array $bindTypes
): StatusInterface;
```

Executes the DELETE intermediate representation producing a
Phalcon\Mvc\Model\Query\Status

<h4 id="mvcmodelquery-executeinsert"><code>executeInsert()</code></h4>

```php
final protected function executeInsert(
array $intermediate,
array $bindParams,
array $bindTypes
): StatusInterface;
```

Executes the INSERT intermediate representation producing a
Phalcon\Mvc\Model\Query\Status

<h4 id="mvcmodelquery-executeselect"><code>executeSelect()</code></h4>

```php
final protected function executeSelect(
array $intermediate,
array $bindParams,
array $bindTypes,
bool $simulate = false
): ResultsetInterface|array;
```

Executes the SELECT intermediate representation producing a
Phalcon\Mvc\Model\Resultset

<h4 id="mvcmodelquery-executeupdate"><code>executeUpdate()</code></h4>

```php
final protected function executeUpdate(
array $intermediate,
array $bindParams,
array $bindTypes
): StatusInterface;
```

Executes the UPDATE intermediate representation producing a
Phalcon\Mvc\Model\Query\Status

<h4 id="mvcmodelquery-getcallargument"><code>getCallArgument()</code></h4>

```php
final protected function getCallArgument( array $argument ): array;
```

Resolves an expression in a single call argument

<h4 id="mvcmodelquery-getcaseexpression"><code>getCaseExpression()</code></h4>

```php
final protected function getCaseExpression( array $expr ): array;
```

Resolves an expression in a single call argument

<h4 id="mvcmodelquery-getexpression"><code>getExpression()</code></h4>

```php
final protected function getExpression(
array $expr,
bool $quoting = true
): array;
```

Resolves an expression from its intermediate code into an array

<h4 id="mvcmodelquery-getfunctioncall"><code>getFunctionCall()</code></h4>

```php
final protected function getFunctionCall( array $expr ): array;
```

Resolves an expression in a single call argument

<h4 id="mvcmodelquery-getgroupclause"><code>getGroupClause()</code></h4>

```php
final protected function getGroupClause( array $group ): array;
```

Returns a processed group clause for a SELECT statement

<h4 id="mvcmodelquery-getjoin"><code>getJoin()</code></h4>

```php
final protected function getJoin(
ManagerInterface $manager,
array $join
): array;
```

Resolves a JOIN clause checking if the associated models exist

<h4 id="mvcmodelquery-getjointype"><code>getJoinType()</code></h4>

```php
final protected function getJoinType( array $join ): string;
```

Resolves a JOIN type

<h4 id="mvcmodelquery-getjoins"><code>getJoins()</code></h4>

```php
final protected function getJoins( array $select ): array;
```

Processes the JOINs in the query returning an internal representation for
the database dialect

<h4 id="mvcmodelquery-getlimitclause"><code>getLimitClause()</code></h4>

```php
final protected function getLimitClause( array $limitClause ): array;
```

Returns a processed limit clause for a SELECT statement

<h4 id="mvcmodelquery-getmultijoin"><code>getMultiJoin()</code></h4>

```php
final protected function getMultiJoin(
string $joinType,
mixed $joinSource,
string $modelAlias,
string $joinAlias,
RelationInterface $relation
): array;
```

Resolves joins involving many-to-many relations

<h4 id="mvcmodelquery-getorderclause"><code>getOrderClause()</code></h4>

```php
final protected function getOrderClause( mixed $order ): array;
```

Returns a processed order clause for a SELECT statement

<h4 id="mvcmodelquery-getqualified"><code>getQualified()</code></h4>

```php
final protected function getQualified( array $expr ): array;
```

Replaces the model's name to its source name in a qualified-name
expression

<h4 id="mvcmodelquery-getreadconnection"><code>getReadConnection()</code></h4>

```php
protected function getReadConnection(
ModelInterface $model,
array|null $intermediate = null,
array $bindParams = [],
array $bindTypes = []
): AdapterInterface;
```

Gets the read connection from the model if there is no transaction set
inside the query object

<h4 id="mvcmodelquery-getrelatedrecords"><code>getRelatedRecords()</code></h4>

```php
final protected function getRelatedRecords(
ModelInterface $model,
array $intermediate,
array $bindParams,
array $bindTypes
): ResultsetInterface;
```

Query the records on which the UPDATE/DELETE operation will be done

<h4 id="mvcmodelquery-getselectcolumn"><code>getSelectColumn()</code></h4>

```php
final protected function getSelectColumn( array $column ): array;
```

Resolves a column from its intermediate representation into an array
used to determine if the resultset produced is simple or complex

<h4 id="mvcmodelquery-getsinglejoin"><code>getSingleJoin()</code></h4>

```php
final protected function getSingleJoin(
string $joinType,
mixed $joinSource,
string $modelAlias,
string $joinAlias,
RelationInterface $relation
): array;
```

Resolves joins involving has-one/belongs-to/has-many relations

<h4 id="mvcmodelquery-gettable"><code>getTable()</code></h4>

```php
final protected function getTable(
ManagerInterface $manager,
array $qualifiedName
);
```

Resolves a table in a SELECT statement checking if the model exists

<h4 id="mvcmodelquery-getwriteconnection"><code>getWriteConnection()</code></h4>

```php
protected function getWriteConnection(
ModelInterface $model,
array|null $intermediate = null,
array $bindParams = [],
array $bindTypes = []
): AdapterInterface;
```

Gets the write connection from the model if there is no transaction
inside the query object

<h4 id="mvcmodelquery-preparedelete"><code>prepareDelete()</code></h4>

```php
final protected function prepareDelete(): array;
```

Analyzes a DELETE intermediate code and produces an array to be executed
later

<h4 id="mvcmodelquery-prepareinsert"><code>prepareInsert()</code></h4>

```php
final protected function prepareInsert(): array;
```

Analyzes an INSERT intermediate code and produces an array to be executed
later

<h4 id="mvcmodelquery-prepareselect"><code>prepareSelect()</code></h4>

```php
final protected function prepareSelect(
mixed $ast = null,
bool $merge = false
): array;
```

Analyzes a SELECT intermediate code and produces an array to be executed later

<h4 id="mvcmodelquery-prepareupdate"><code>prepareUpdate()</code></h4>

```php
final protected function prepareUpdate(): array;
```

Analyzes an UPDATE intermediate code and produces an array to be executed
later

<h4 id="mvcmodelquery-refreshschemasinintermediate"><code>refreshSchemasInIntermediate()</code></h4>

```php
final protected function refreshSchemasInIntermediate( array $irPhql ): array;
```

Refreshes the schema/source of every model referenced in a cached
intermediate representation. The PHQL cache is keyed by the PHQL
string only, so a model that switches its schema or source at
runtime (for instance via setSchema()/setSource() in initialize())
would otherwise see the value frozen at first parse. See #17020.

## Mvc\Model\QueryInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/QueryInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\QueryInterface

Interface for Phalcon\Mvc\Model\Query

<div class="api-tree">

- **`Phalcon\Mvc\Model\QueryInterface`**

</div>

__Uses__ `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryinterface-cache">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">cache</span>( <span class="st">array</span> <span class="sv">$cacheOptions</span> )</code>
<span class="desc">Sets the cache parameters of the query</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-execute">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">execute</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Executes a parsed PHQL statement</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-getbindparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindParams</span>()</code>
<span class="desc">Returns default bind params</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-getbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindTypes</span>()</code>
<span class="desc">Returns default bind types</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-getcacheoptions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getCacheOptions</span>()</code>
<span class="desc">Returns the current cache options</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-getsingleresult">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">getSingleResult</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Executes the query returning the first result</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-getsql">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getSql</span>()</code>
<span class="desc">Returns the SQL to be generated by the internal PHQL (only works in SELECT statements)</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-getuniquerow">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">getUniqueRow</span>()</code>
<span class="desc">Check if the query is programmed to get only the first row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-parse">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">parse</span>()</code>
<span class="desc">Parses the intermediate code produced by Phalcon\Mvc\Model\Query\Lang generating another</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-setbindparams">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setBindParams</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind parameters</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-setbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setBindTypes</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind parameters</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-setsharedlock">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setSharedLock</span>( <span class="st">bool</span> <span class="sv">$sharedLock</span><span class="sm"> = false</span> )</code>
<span class="desc">Set SHARED LOCK clause</span>
</a>
<a class="api-item" href="#mvcmodelqueryinterface-setuniquerow">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">setUniqueRow</span>( <span class="st">bool</span> <span class="sv">$uniqueRow</span> )</code>
<span class="desc">Tells to the query if only the first row in the resultset must be returned</span>
</a>
</div>

### Methods

<div class="api-group">Public · 13</div>

<h4 id="mvcmodelqueryinterface-cache"><code>cache()</code></h4>

```php
public function cache( array $cacheOptions ): QueryInterface;
```

Sets the cache parameters of the query

<h4 id="mvcmodelqueryinterface-execute"><code>execute()</code></h4>

```php
public function execute(
array $bindParams = [],
array $bindTypes = []
);
```

Executes a parsed PHQL statement

<h4 id="mvcmodelqueryinterface-getbindparams"><code>getBindParams()</code></h4>

```php
public function getBindParams(): array;
```

Returns default bind params

<h4 id="mvcmodelqueryinterface-getbindtypes"><code>getBindTypes()</code></h4>

```php
public function getBindTypes(): array;
```

Returns default bind types

<h4 id="mvcmodelqueryinterface-getcacheoptions"><code>getCacheOptions()</code></h4>

```php
public function getCacheOptions(): array;
```

Returns the current cache options

<h4 id="mvcmodelqueryinterface-getsingleresult"><code>getSingleResult()</code></h4>

```php
public function getSingleResult(
array $bindParams = [],
array $bindTypes = []
): ModelInterface;
```

Executes the query returning the first result

<h4 id="mvcmodelqueryinterface-getsql"><code>getSql()</code></h4>

```php
public function getSql(): array;
```

Returns the SQL to be generated by the internal PHQL (only works in SELECT statements)

<h4 id="mvcmodelqueryinterface-getuniquerow"><code>getUniqueRow()</code></h4>

```php
public function getUniqueRow(): bool;
```

Check if the query is programmed to get only the first row in the resultset

<h4 id="mvcmodelqueryinterface-parse"><code>parse()</code></h4>

```php
public function parse(): array;
```

Parses the intermediate code produced by Phalcon\Mvc\Model\Query\Lang generating another
intermediate representation that could be executed by Phalcon\Mvc\Model\Query

<h4 id="mvcmodelqueryinterface-setbindparams"><code>setBindParams()</code></h4>

```php
public function setBindParams(
array $bindParams,
bool $merge = false
): QueryInterface;
```

Set default bind parameters

<h4 id="mvcmodelqueryinterface-setbindtypes"><code>setBindTypes()</code></h4>

```php
public function setBindTypes(
array $bindTypes,
bool $merge = false
): QueryInterface;
```

Set default bind parameters

<h4 id="mvcmodelqueryinterface-setsharedlock"><code>setSharedLock()</code></h4>

```php
public function setSharedLock( bool $sharedLock = false ): QueryInterface;
```

Set SHARED LOCK clause

<h4 id="mvcmodelqueryinterface-setuniquerow"><code>setUniqueRow()</code></h4>

```php
public function setUniqueRow( bool $uniqueRow ): QueryInterface;
```

Tells to the query if only the first row in the resultset must be returned

## Mvc\Model\Query\Builder

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Builder.zep">Source on GitHub</a>

Helps to create PHQL queries using an OO interface

```php
$params = [
"models"     => [
    Users::class,
],
"columns"    => ["id", "name", "status"],
"conditions" => [
    [
        "created > :min: AND created < :max:",
        [
            "min" => "2013-01-01",
            "max" => "2014-01-01",
        ],
        [
            "min" => PDO::PARAM_STR,
            "max" => PDO::PARAM_STR,
        ],
    ],
],
// or "conditions" => "created > '2013-01-01' AND created < '2014-01-01'",
"group"      => ["id", "name"],
"having"     => "name = 'Kamil'",
"order"      => ["name", "id"],
"limit"      => 20,
"offset"     => 20,
// or "limit" => [20, 20],
];

$queryBuilder = new \Phalcon\Mvc\Model\Query\Builder($params);
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Query\Builder`** - implements [`Phalcon\Mvc\Model\Query\BuilderInterface`](#mvcmodelquerybuilderinterface), [`Phalcon\Di\InjectionAwareInterface`](/5.19/api/phalcon_di/#diinjectionawareinterface)

</div>

__Uses__ `Phalcon\Db\Column` · `Phalcon\Di\Di` · `Phalcon\Di\DiInterface` · `Phalcon\Di\InjectionAwareInterface` · `Phalcon\Mvc\Model\Exception` · `Phalcon\Mvc\Model\Exceptions\ManagerOrmServicesUnavailable` · `Phalcon\Mvc\Model\Query` · `Phalcon\Mvc\Model\QueryInterface` · `Phalcon\Mvc\Model\Query\Exceptions\Builder\BuilderColumnNotInMap` · `Phalcon\Mvc\Model\Query\Exceptions\Builder\BuilderConditionInvalid` · `Phalcon\Mvc\Model\Query\Exceptions\Builder\ModelRequired` · `Phalcon\Mvc\Model\Query\Exceptions\Builder\NoPrimaryKey` · `Phalcon\Mvc\Model\Query\Exceptions\Builder\OperatorNotAvailable` · `Phalcon\Support\Settings`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelquerybuilder-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Query\Builder constructor</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-addfrom">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">addFrom</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Add a model to take part of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-andhaving">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">andHaving</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Appends a condition to the current HAVING conditions clause using a AND operator</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-andwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">andWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Appends a condition to the current WHERE conditions using a AND operator</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-autoescape">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">autoescape</span>( <span class="st">string</span> <span class="sv">$identifier</span> )</code>
<span class="desc">Automatically escapes identifiers but only if they need to be escaped.</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-betweenhaving">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">betweenHaving</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a BETWEEN condition to the current HAVING conditions clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-betweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">betweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a BETWEEN condition to the current WHERE conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-columns">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">columns</span>( <span class="st">mixed</span> <span class="sv">$columns</span> )</code>
<span class="desc">Sets the columns to be queried. The columns can be either a <code>string</code> or</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-distinct">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">distinct</span>( <span class="st">mixed</span> <span class="sv">$distinct</span> )</code>
<span class="desc">Sets SELECT DISTINCT / SELECT ALL flag</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-forupdate">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">forUpdate</span>( <span class="st">bool</span> <span class="sv">$forUpdate</span> )</code>
<span class="desc">Sets a FOR UPDATE clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-from">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">from</span>( <span class="st">mixed</span> <span class="sv">$models</span> )</code>
<span class="desc">Sets the models who makes part of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getbindparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindParams</span>()</code>
<span class="desc">Returns default bind params</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindTypes</span>()</code>
<span class="desc">Returns default bind types</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getcolumns">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getColumns</span>()</code>
<span class="desc">Return the columns to be queried</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getdi">
<code class="vis vis-public">public</code>
<code class="ret">DiInterface</code>
<code class="sig"><span class="sf">getDI</span>()</code>
<span class="desc">Returns the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getdistinct">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">getDistinct</span>()</code>
<span class="desc">Returns SELECT DISTINCT / SELECT ALL flag</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getfrom">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getFrom</span>()</code>
<span class="desc">Return the models who makes part of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getgroupby">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getGroupBy</span>()</code>
<span class="desc">Returns the GROUP BY clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-gethaving">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getHaving</span>()</code>
<span class="desc">Return the current having clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getjoins">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getJoins</span>()</code>
<span class="desc">Return join parts of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getlimit">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getLimit</span>()</code>
<span class="desc">Returns the current LIMIT clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getmodels">
<code class="vis vis-public">public</code>
<code class="ret">string|array|null</code>
<code class="sig"><span class="sf">getModels</span>()</code>
<span class="desc">Returns the models involved in the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getoffset">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getOffset</span>()</code>
<span class="desc">Returns the current OFFSET clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getorderby">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getOrderBy</span>()</code>
<span class="desc">Returns the set ORDER BY clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getphql">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPhql</span>()</code>
<span class="desc">Returns a PHQL statement built based on the builder parameters</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getquery">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">getQuery</span>()</code>
<span class="desc">Returns the query built</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getresultsetrowclass">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getResultsetRowClass</span>()</code>
<span class="desc">Returns the class that will be used to hydrate rows that are not mapped</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-getwhere">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getWhere</span>()</code>
<span class="desc">Return the conditions for the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-groupby">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">groupBy</span>( <span class="st">mixed</span> <span class="sv">$group</span> )</code>
<span class="desc">Sets a GROUP BY clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-having">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">having</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Sets the HAVING condition clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-inhaving">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">inHaving</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends an IN condition to the current HAVING conditions clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-inwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">inWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends an IN condition to the current WHERE conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-innerjoin">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">innerJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds an INNER join to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-join">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">join</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$type</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds an :type: join (by default type - INNER) to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-leftjoin">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">leftJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a LEFT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-limit">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">limit</span>(<span class="prm"><span class="st">int</span> <span class="sv">$limit</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$offset</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets a LIMIT clause, optionally an offset clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-notbetweenhaving">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">notBetweenHaving</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a NOT BETWEEN condition to the current HAVING conditions clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-notbetweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">notBetweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a NOT BETWEEN condition to the current WHERE conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-notinhaving">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">notInHaving</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a NOT IN condition to the current HAVING conditions clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-notinwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">notInWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a NOT IN condition to the current WHERE conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-offset">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">offset</span>( <span class="st">int</span> <span class="sv">$offset</span> )</code>
<span class="desc">Sets an OFFSET clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-orhaving">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">orHaving</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Appends a condition to the current HAVING conditions clause using an OR operator</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-orwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">orWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Appends a condition to the current conditions using an OR operator</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-orderby">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">orderBy</span>( <span class="st">mixed</span> <span class="sv">$orderBy</span> )</code>
<span class="desc">Sets an ORDER BY condition clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-rightjoin">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">rightJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a RIGHT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-setbindparams">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">setBindParams</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind parameters</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-setbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">setBindTypes</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind types</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the DependencyInjector container</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-setresultsetrowclass">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">setResultsetRowClass</span>( <span class="st">string</span> <span class="sv">$resultsetRowClass</span> )</code>
<span class="desc">Sets the class used to hydrate rows that are not mapped to a model</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-where">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">where</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Sets the query WHERE conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-conditionbetween">
<code class="vis vis-protected">protected</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">conditionBetween</span>(<span class="prm"><span class="st">string</span> <span class="sv">$clause</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span></span>)</code>
<span class="desc">Appends a BETWEEN condition</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-conditionin">
<code class="vis vis-protected">protected</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">conditionIn</span>(<span class="prm"><span class="st">string</span> <span class="sv">$clause</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span></span>)</code>
<span class="desc">Appends an IN condition</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-conditionnotbetween">
<code class="vis vis-protected">protected</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">conditionNotBetween</span>(<span class="prm"><span class="st">string</span> <span class="sv">$clause</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span></span>)</code>
<span class="desc">Appends a NOT BETWEEN condition</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilder-conditionnotin">
<code class="vis vis-protected">protected</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">conditionNotIn</span>(<span class="prm"><span class="st">string</span> <span class="sv">$clause</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span></span>)</code>
<span class="desc">Appends a NOT IN condition</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$bindParams</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$bindTypes</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sv">$columns</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sv">$conditions</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">DiInterface|null</code>
<code class="sig"><span class="sv">$container</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sv">$distinct</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$forUpdate</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$group</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$having</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$hiddenParamNumber</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$joins</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$limit</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$models</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$offset</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$order</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$resultsetRowClass</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$sharedLock</span><span class="sm"> = false</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 50</div>

<h4 id="mvcmodelquerybuilder-__construct"><code>__construct()</code></h4>

```php
public function __construct(
mixed $params = null,
DiInterface|null $container = null
);
```

Phalcon\Mvc\Model\Query\Builder constructor

<h4 id="mvcmodelquerybuilder-addfrom"><code>addFrom()</code></h4>

```php
public function addFrom(
string $model,
string|null $alias = null
): BuilderInterface;
```

Add a model to take part of the query

```php
// Load data from models Invoices
$builder->addFrom(
Invoices::class
);

// Load data from model 'Invoices' using 'r' as alias in PHQL
$builder->addFrom(
Invoices::class,
"r"
);
```

<h4 id="mvcmodelquerybuilder-andhaving"><code>andHaving()</code></h4>

```php
public function andHaving(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Appends a condition to the current HAVING conditions clause using a AND operator

```php
$builder->andHaving("SUM(Invoices.inv_total) > 0");

$builder->andHaving(
"SUM(Invoices.inv_total) > :sum:",
[
    "sum" => 100,
]
);
```

<h4 id="mvcmodelquerybuilder-andwhere"><code>andWhere()</code></h4>

```php
public function andWhere(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Appends a condition to the current WHERE conditions using a AND operator

```php
$builder->andWhere("name = 'Peter'");

$builder->andWhere(
"name = :name: AND id > :id:",
[
    "name" => "Peter",
    "id"   => 100,
]
);
```

<h4 id="mvcmodelquerybuilder-autoescape"><code>autoescape()</code></h4>

```php
final public function autoescape( string $identifier ): string;
```

Automatically escapes identifiers but only if they need to be escaped.

<h4 id="mvcmodelquerybuilder-betweenhaving"><code>betweenHaving()</code></h4>

```php
public function betweenHaving(
string $expr,
mixed $minimum,
mixed $maximum,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a BETWEEN condition to the current HAVING conditions clause

```php
$builder->betweenHaving("SUM(Invoices.inv_total)", 100.25, 200.50);
```

<h4 id="mvcmodelquerybuilder-betweenwhere"><code>betweenWhere()</code></h4>

```php
public function betweenWhere(
string $expr,
mixed $minimum,
mixed $maximum,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a BETWEEN condition to the current WHERE conditions

```php
$builder->betweenWhere("price", 100.25, 200.50);
```

<h4 id="mvcmodelquerybuilder-columns"><code>columns()</code></h4>

```php
public function columns( mixed $columns ): BuilderInterface;
```

Sets the columns to be queried. The columns can be either a `string` or
an `array` of strings. If the argument is a (single, non-embedded) string,
its content can specify one or more columns, separated by commas, the same
way that one uses the SQL select statement. You can use aliases, aggregate
functions, etc. If you need to reference other models you will need to
reference them with their namespaces.

When using an array as a parameter, you will need to specify one field
per array element. If a non-numeric key is defined in the array, it will
be used as the alias in the query

```php
<?php

// String, comma separated values
$builder->columns("id, category");

// Array, one column per element
$builder->columns(
[
    "inv_id",
    "inv_total",
]
);

// Array with named key. The name of the key acts as an
// alias (`AS` clause)
$builder->columns(
[
    "inv_cst_id",
    "total_invoices" => "COUNT(*)",
]
);

// Different models
$builder->columns(
[
    "\Phalcon\Models\Invoices.*",
    "\Phalcon\Models\Customers.cst_name_first",
    "\Phalcon\Models\Customers.cst_name_last",
]
);
```

<h4 id="mvcmodelquerybuilder-distinct"><code>distinct()</code></h4>

```php
public function distinct( mixed $distinct ): BuilderInterface;
```

Sets SELECT DISTINCT / SELECT ALL flag

```php
$builder->distinct("status");
$builder->distinct(null);
```

<h4 id="mvcmodelquerybuilder-forupdate"><code>forUpdate()</code></h4>

```php
public function forUpdate( bool $forUpdate ): BuilderInterface;
```

Sets a FOR UPDATE clause

```php
$builder->forUpdate(true);
```

<h4 id="mvcmodelquerybuilder-from"><code>from()</code></h4>

```php
public function from( mixed $models ): BuilderInterface;
```

Sets the models who makes part of the query

```php
$builder->from(
Invoices::class
);

$builder->from(
[
    Invoices::class,
    OrdersProducts::class,
]
);

$builder->from(
[
    "r"  => Invoices::class,
    "rp" => OrdersProducts::class,
]
);
```

<h4 id="mvcmodelquerybuilder-getbindparams"><code>getBindParams()</code></h4>

```php
public function getBindParams(): array;
```

Returns default bind params

<h4 id="mvcmodelquerybuilder-getbindtypes"><code>getBindTypes()</code></h4>

```php
public function getBindTypes(): array;
```

Returns default bind types

<h4 id="mvcmodelquerybuilder-getcolumns"><code>getColumns()</code></h4>

```php
public function getColumns();
```

Return the columns to be queried

<h4 id="mvcmodelquerybuilder-getdi"><code>getDI()</code></h4>

```php
public function getDI(): DiInterface;
```

Returns the DependencyInjector container

<h4 id="mvcmodelquerybuilder-getdistinct"><code>getDistinct()</code></h4>

```php
public function getDistinct(): bool;
```

Returns SELECT DISTINCT / SELECT ALL flag

<h4 id="mvcmodelquerybuilder-getfrom"><code>getFrom()</code></h4>

```php
public function getFrom();
```

Return the models who makes part of the query

<h4 id="mvcmodelquerybuilder-getgroupby"><code>getGroupBy()</code></h4>

```php
public function getGroupBy(): array;
```

Returns the GROUP BY clause

<h4 id="mvcmodelquerybuilder-gethaving"><code>getHaving()</code></h4>

```php
public function getHaving(): string|null;
```

Return the current having clause

<h4 id="mvcmodelquerybuilder-getjoins"><code>getJoins()</code></h4>

```php
public function getJoins(): array;
```

Return join parts of the query

<h4 id="mvcmodelquerybuilder-getlimit"><code>getLimit()</code></h4>

```php
public function getLimit();
```

Returns the current LIMIT clause

<h4 id="mvcmodelquerybuilder-getmodels"><code>getModels()</code></h4>

```php
public function getModels(): string|array|null;
```

Returns the models involved in the query

<h4 id="mvcmodelquerybuilder-getoffset"><code>getOffset()</code></h4>

```php
public function getOffset(): int;
```

Returns the current OFFSET clause

<h4 id="mvcmodelquerybuilder-getorderby"><code>getOrderBy()</code></h4>

```php
public function getOrderBy();
```

Returns the set ORDER BY clause

<h4 id="mvcmodelquerybuilder-getphql"><code>getPhql()</code></h4>

```php
final public function getPhql(): string;
```

Returns a PHQL statement built based on the builder parameters

<h4 id="mvcmodelquerybuilder-getquery"><code>getQuery()</code></h4>

```php
public function getQuery(): QueryInterface;
```

Returns the query built

<h4 id="mvcmodelquerybuilder-getresultsetrowclass"><code>getResultsetRowClass()</code></h4>

```php
public function getResultsetRowClass(): string;
```

Returns the class that will be used to hydrate rows that are not mapped
to a model (custom columns/joins). An empty string means the default
Phalcon\Mvc\Model\Row is used.

<h4 id="mvcmodelquerybuilder-getwhere"><code>getWhere()</code></h4>

```php
public function getWhere();
```

Return the conditions for the query

<h4 id="mvcmodelquerybuilder-groupby"><code>groupBy()</code></h4>

```php
public function groupBy( mixed $group ): BuilderInterface;
```

Sets a GROUP BY clause

```php
$builder->groupBy(
[
    "Invoices.inv_title",
]
);
```

Passing null (or an empty array) clears the clause; the PHQL generator
treats both as "no GROUP BY".

<h4 id="mvcmodelquerybuilder-having"><code>having()</code></h4>

```php
public function having(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Sets the HAVING condition clause

```php
$builder->having("SUM(Invoices.inv_total) > 0");

$builder->having(
"SUM(Invoices.inv_total) > :sum:",
[
    "sum" => 100,
]
);
```

<h4 id="mvcmodelquerybuilder-inhaving"><code>inHaving()</code></h4>

```php
public function inHaving(
string $expr,
array $values,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends an IN condition to the current HAVING conditions clause

```php
$builder->inHaving("SUM(Invoices.inv_total)", [100, 200]);
```

<h4 id="mvcmodelquerybuilder-inwhere"><code>inWhere()</code></h4>

```php
public function inWhere(
string $expr,
array $values,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends an IN condition to the current WHERE conditions

```php
$builder->inWhere(
"id",
[1, 2, 3]
);
```

<h4 id="mvcmodelquerybuilder-innerjoin"><code>innerJoin()</code></h4>

```php
public function innerJoin(
string $model,
string|null $conditions = null,
string|null $alias = null
): BuilderInterface;
```

Adds an INNER join to the query

```php
// Inner Join model 'Invoices' with automatic conditions and alias
$builder->innerJoin(
Invoices::class
);

// Inner Join model 'Invoices' specifying conditions
$builder->innerJoin(
Invoices::class,
"Invoices.inv_id = OrdersProducts.oxp_ord_id"
);

// Inner Join model 'Invoices' specifying conditions and alias
$builder->innerJoin(
Invoices::class,
"r.inv_id = OrdersProducts.oxp_ord_id",
"r"
);
```

<h4 id="mvcmodelquerybuilder-join"><code>join()</code></h4>

```php
public function join(
string $model,
string|null $conditions = null,
string|null $alias = null,
string|null $type = null
): BuilderInterface;
```

Adds an :type: join (by default type - INNER) to the query

```php
// Inner Join model 'Invoices' with automatic conditions and alias
$builder->join(
Invoices::class
);

// Inner Join model 'Invoices' specifying conditions
$builder->join(
Invoices::class,
"Invoices.inv_id = OrdersProducts.oxp_ord_id"
);

// Inner Join model 'Invoices' specifying conditions and alias
$builder->join(
Invoices::class,
"r.inv_id = OrdersProducts.oxp_ord_id",
"r"
);

// Left Join model 'Invoices' specifying conditions, alias and type of join
$builder->join(
Invoices::class,
"r.inv_id = OrdersProducts.oxp_ord_id",
"r",
"LEFT"
);
```

<h4 id="mvcmodelquerybuilder-leftjoin"><code>leftJoin()</code></h4>

```php
public function leftJoin(
string $model,
string|null $conditions = null,
string|null $alias = null
): BuilderInterface;
```

Adds a LEFT join to the query

```php
$builder->leftJoin(
Invoices::class,
"r.inv_id = OrdersProducts.oxp_ord_id",
"r"
);
```

<h4 id="mvcmodelquerybuilder-limit"><code>limit()</code></h4>

```php
public function limit(
int $limit,
mixed $offset = null
): BuilderInterface;
```

Sets a LIMIT clause, optionally an offset clause

```php
$builder->limit(100);
$builder->limit(100, 20);
$builder->limit("100", "20");
```

<h4 id="mvcmodelquerybuilder-notbetweenhaving"><code>notBetweenHaving()</code></h4>

```php
public function notBetweenHaving(
string $expr,
mixed $minimum,
mixed $maximum,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a NOT BETWEEN condition to the current HAVING conditions clause

```php
$builder->notBetweenHaving("SUM(Invoices.inv_total)", 100.25, 200.50);
```

<h4 id="mvcmodelquerybuilder-notbetweenwhere"><code>notBetweenWhere()</code></h4>

```php
public function notBetweenWhere(
string $expr,
mixed $minimum,
mixed $maximum,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a NOT BETWEEN condition to the current WHERE conditions

```php
$builder->notBetweenWhere("price", 100.25, 200.50);
```

<h4 id="mvcmodelquerybuilder-notinhaving"><code>notInHaving()</code></h4>

```php
public function notInHaving(
string $expr,
array $values,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a NOT IN condition to the current HAVING conditions clause

```php
$builder->notInHaving("SUM(Invoices.inv_total)", [100, 200]);
```

<h4 id="mvcmodelquerybuilder-notinwhere"><code>notInWhere()</code></h4>

```php
public function notInWhere(
string $expr,
array $values,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a NOT IN condition to the current WHERE conditions

```php
$builder->notInWhere("id", [1, 2, 3]);
```

<h4 id="mvcmodelquerybuilder-offset"><code>offset()</code></h4>

```php
public function offset( int $offset ): BuilderInterface;
```

Sets an OFFSET clause

```php
$builder->offset(30);
```

<h4 id="mvcmodelquerybuilder-orhaving"><code>orHaving()</code></h4>

```php
public function orHaving(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Appends a condition to the current HAVING conditions clause using an OR operator

```php
$builder->orHaving("SUM(Invoices.inv_total) > 0");

$builder->orHaving(
"SUM(Invoices.inv_total) > :sum:",
[
    "sum" => 100,
]
);
```

<h4 id="mvcmodelquerybuilder-orwhere"><code>orWhere()</code></h4>

```php
public function orWhere(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Appends a condition to the current conditions using an OR operator

```php
$builder->orWhere("name = 'Peter'");

$builder->orWhere(
"name = :name: AND id > :id:",
[
    "name" => "Peter",
    "id"   => 100,
]
);
```

<h4 id="mvcmodelquerybuilder-orderby"><code>orderBy()</code></h4>

```php
public function orderBy( mixed $orderBy ): BuilderInterface;
```

Sets an ORDER BY condition clause

```php
$builder->orderBy("Invoices.inv_title");
$builder->orderBy(["1", "Invoices.inv_title"]);
$builder->orderBy(["Invoices.inv_title DESC"]);
```

<h4 id="mvcmodelquerybuilder-rightjoin"><code>rightJoin()</code></h4>

```php
public function rightJoin(
string $model,
string|null $conditions = null,
string|null $alias = null
): BuilderInterface;
```

Adds a RIGHT join to the query

```php
$builder->rightJoin(
Invoices::class,
"r.inv_id = OrdersProducts.oxp_ord_id",
"r"
);
```

<h4 id="mvcmodelquerybuilder-setbindparams"><code>setBindParams()</code></h4>

```php
public function setBindParams(
array $bindParams,
bool $merge = false
): BuilderInterface;
```

Set default bind parameters

<h4 id="mvcmodelquerybuilder-setbindtypes"><code>setBindTypes()</code></h4>

```php
public function setBindTypes(
array $bindTypes,
bool $merge = false
): BuilderInterface;
```

Set default bind types

<h4 id="mvcmodelquerybuilder-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the DependencyInjector container

<h4 id="mvcmodelquerybuilder-setresultsetrowclass"><code>setResultsetRowClass()</code></h4>

```php
public function setResultsetRowClass( string $resultsetRowClass ): BuilderInterface;
```

Sets the class used to hydrate rows that are not mapped to a model
(custom columns/joins). The class must be a subclass of
Phalcon\Mvc\Model\Row. Validation is performed by the underlying
Phalcon\Mvc\Model\Query when the query is built.

<h4 id="mvcmodelquerybuilder-where"><code>where()</code></h4>

```php
public function where(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Sets the query WHERE conditions

```php
$builder->where(100);

$builder->where("name = 'Peter'");

$builder->where(
"name = :name: AND id > :id:",
[
    "name" => "Peter",
    "id"   => 100,
]
);
```

<div class="api-group">Protected · 4</div>

<h4 id="mvcmodelquerybuilder-conditionbetween"><code>conditionBetween()</code></h4>

```php
protected function conditionBetween(
string $clause,
string $operator,
string $expr,
mixed $minimum,
mixed $maximum
): BuilderInterface;
```

Appends a BETWEEN condition

<h4 id="mvcmodelquerybuilder-conditionin"><code>conditionIn()</code></h4>

```php
protected function conditionIn(
string $clause,
string $operator,
string $expr,
array $values
): BuilderInterface;
```

Appends an IN condition

<h4 id="mvcmodelquerybuilder-conditionnotbetween"><code>conditionNotBetween()</code></h4>

```php
protected function conditionNotBetween(
string $clause,
string $operator,
string $expr,
mixed $minimum,
mixed $maximum
): BuilderInterface;
```

Appends a NOT BETWEEN condition

<h4 id="mvcmodelquerybuilder-conditionnotin"><code>conditionNotIn()</code></h4>

```php
protected function conditionNotIn(
string $clause,
string $operator,
string $expr,
array $values
): BuilderInterface;
```

Appends a NOT IN condition

## Mvc\Model\Query\BuilderInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/BuilderInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\Model\Query\Builder

<div class="api-tree">

- **`Phalcon\Mvc\Model\Query\BuilderInterface`**

</div>

__Uses__ `Phalcon\Mvc\Model\QueryInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelquerybuilderinterface-addfrom">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">addFrom</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Add a model to take part of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-andwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">andWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Appends a condition to the current conditions using a AND operator</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-betweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">betweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a BETWEEN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-columns">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">columns</span>( <span class="st">mixed</span> <span class="sv">$columns</span> )</code>
<span class="desc">Sets the columns to be queried. The columns can be either a <code>string</code> or</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-distinct">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">distinct</span>( <span class="st">mixed</span> <span class="sv">$distinct</span> )</code>
<span class="desc">Sets SELECT DISTINCT / SELECT ALL flag</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-forupdate">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">forUpdate</span>( <span class="st">bool</span> <span class="sv">$forUpdate</span> )</code>
<span class="desc">Sets a FOR UPDATE clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-from">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">from</span>( <span class="st">mixed</span> <span class="sv">$models</span> )</code>
<span class="desc">Sets the models who makes part of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getbindparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindParams</span>()</code>
<span class="desc">Returns default bind params</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getBindTypes</span>()</code>
<span class="desc">Returns default bind types</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getcolumns">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getColumns</span>()</code>
<span class="desc">Return the columns to be queried</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getdistinct">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">getDistinct</span>()</code>
<span class="desc">Returns SELECT DISTINCT / SELECT ALL flag</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getfrom">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getFrom</span>()</code>
<span class="desc">Return the models who makes part of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getgroupby">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getGroupBy</span>()</code>
<span class="desc">Returns the GROUP BY clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-gethaving">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getHaving</span>()</code>
<span class="desc">Returns the HAVING condition clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getjoins">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getJoins</span>()</code>
<span class="desc">Return join parts of the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getlimit">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getLimit</span>()</code>
<span class="desc">Returns the current LIMIT clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getmodels">
<code class="vis vis-public">public</code>
<code class="ret">string|array|null</code>
<code class="sig"><span class="sf">getModels</span>()</code>
<span class="desc">Returns the models involved in the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getoffset">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getOffset</span>()</code>
<span class="desc">Returns the current OFFSET clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getorderby">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getOrderBy</span>()</code>
<span class="desc">Return the set ORDER BY clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getphql">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPhql</span>()</code>
<span class="desc">Returns a PHQL statement built based on the builder parameters</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getquery">
<code class="vis vis-public">public</code>
<code class="ret">QueryInterface</code>
<code class="sig"><span class="sf">getQuery</span>()</code>
<span class="desc">Returns the query built</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-getwhere">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getWhere</span>()</code>
<span class="desc">Return the conditions for the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-groupby">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">groupBy</span>( <span class="st">mixed</span> <span class="sv">$group</span> )</code>
<span class="desc">Sets a GROUP BY clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-having">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">having</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Sets a HAVING condition clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-inwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">inWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends an IN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-innerjoin">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">innerJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds an INNER join to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-join">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">join</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds an :type: join (by default type - INNER) to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-leftjoin">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">leftJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a LEFT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-limit">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">limit</span>(<span class="prm"><span class="st">int</span> <span class="sv">$limit</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$offset</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Sets a LIMIT clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-notbetweenwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">notBetweenWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$minimum</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$maximum</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a NOT BETWEEN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-notinwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">notInWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$values</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$operator</span><span class="sm"> = BuilderInterface::OPERATOR_AND</span></span>)</code>
<span class="desc">Appends a NOT IN condition to the current conditions</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-offset">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">offset</span>( <span class="st">int</span> <span class="sv">$offset</span> )</code>
<span class="desc">Sets an OFFSET clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-orwhere">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">orWhere</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Appends a condition to the current conditions using an OR operator</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-orderby">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">orderBy</span>( <span class="st">mixed</span> <span class="sv">$orderBy</span> )</code>
<span class="desc">Sets an ORDER BY condition clause</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-rightjoin">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">rightJoin</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$conditions</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$alias</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a RIGHT join to the query</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-setbindparams">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">setBindParams</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind parameters</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-setbindtypes">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">setBindTypes</span>(<span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Set default bind types</span>
</a>
<a class="api-item" href="#mvcmodelquerybuilderinterface-where">
<code class="vis vis-public">public</code>
<code class="ret">BuilderInterface</code>
<code class="sig"><span class="sf">where</span>(<span class="prm"><span class="st">string</span> <span class="sv">$conditions</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindParams</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$bindTypes</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Sets conditions for the query</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">string</code>
<code class="sig"><span class="sc">OPERATOR_AND</span><span class="sm"> = &quot;and&quot;</span></code>
</div>
<div class="api-item">
<code class="ret">string</code>
<code class="sig"><span class="sc">OPERATOR_OR</span><span class="sm"> = &quot;or&quot;</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 38</div>

<h4 id="mvcmodelquerybuilderinterface-addfrom"><code>addFrom()</code></h4>

```php
public function addFrom(
string $model,
string|null $alias = null
): BuilderInterface;
```

Add a model to take part of the query

<h4 id="mvcmodelquerybuilderinterface-andwhere"><code>andWhere()</code></h4>

```php
public function andWhere(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Appends a condition to the current conditions using a AND operator

<h4 id="mvcmodelquerybuilderinterface-betweenwhere"><code>betweenWhere()</code></h4>

```php
public function betweenWhere(
string $expr,
mixed $minimum,
mixed $maximum,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a BETWEEN condition to the current conditions

<h4 id="mvcmodelquerybuilderinterface-columns"><code>columns()</code></h4>

```php
public function columns( mixed $columns ): BuilderInterface;
```

Sets the columns to be queried. The columns can be either a `string` or
an `array` of strings. If the argument is a (single, non-embedded) string,
its content can specify one or more columns, separated by commas, the same
way that one uses the SQL select statement. You can use aliases, aggregate
functions, etc. If you need to reference other models you will need to
reference them with their namespaces.

When using an array as a parameter, you will need to specify one field
per array element. If a non-numeric key is defined in the array, it will
be used as the alias in the query

```php
<?php

// String, comma separated values
$builder->columns("id, name");

// Array, one column per element
$builder->columns(
[
    "id",
    "name",
]
);

// Array, named keys. The name of the key acts as an alias (`AS` clause)
$builder->columns(
[
    "name",
    "number" => "COUNT(*)",
]
);

// Different models
$builder->columns(
[
    "\Phalcon\Models\Invoices.*",
    "\Phalcon\Models\Customers.cst_name_first",
    "\Phalcon\Models\Customers.cst_name_last",
]
);
```

<h4 id="mvcmodelquerybuilderinterface-distinct"><code>distinct()</code></h4>

```php
public function distinct( mixed $distinct ): BuilderInterface;
```

Sets SELECT DISTINCT / SELECT ALL flag

```php
$builder->distinct("status");
$builder->distinct(null);
```

<h4 id="mvcmodelquerybuilderinterface-forupdate"><code>forUpdate()</code></h4>

```php
public function forUpdate( bool $forUpdate ): BuilderInterface;
```

Sets a FOR UPDATE clause

```php
$builder->forUpdate(true);
```

<h4 id="mvcmodelquerybuilderinterface-from"><code>from()</code></h4>

```php
public function from( mixed $models ): BuilderInterface;
```

Sets the models who makes part of the query

<h4 id="mvcmodelquerybuilderinterface-getbindparams"><code>getBindParams()</code></h4>

```php
public function getBindParams(): array;
```

Returns default bind params

<h4 id="mvcmodelquerybuilderinterface-getbindtypes"><code>getBindTypes()</code></h4>

```php
public function getBindTypes(): array;
```

Returns default bind types

<h4 id="mvcmodelquerybuilderinterface-getcolumns"><code>getColumns()</code></h4>

```php
public function getColumns();
```

Return the columns to be queried

<h4 id="mvcmodelquerybuilderinterface-getdistinct"><code>getDistinct()</code></h4>

```php
public function getDistinct(): bool;
```

Returns SELECT DISTINCT / SELECT ALL flag

<h4 id="mvcmodelquerybuilderinterface-getfrom"><code>getFrom()</code></h4>

```php
public function getFrom();
```

Return the models who makes part of the query

<h4 id="mvcmodelquerybuilderinterface-getgroupby"><code>getGroupBy()</code></h4>

```php
public function getGroupBy(): array;
```

Returns the GROUP BY clause

<h4 id="mvcmodelquerybuilderinterface-gethaving"><code>getHaving()</code></h4>

```php
public function getHaving(): string|null;
```

Returns the HAVING condition clause

<h4 id="mvcmodelquerybuilderinterface-getjoins"><code>getJoins()</code></h4>

```php
public function getJoins(): array;
```

Return join parts of the query

<h4 id="mvcmodelquerybuilderinterface-getlimit"><code>getLimit()</code></h4>

```php
public function getLimit();
```

Returns the current LIMIT clause

<h4 id="mvcmodelquerybuilderinterface-getmodels"><code>getModels()</code></h4>

```php
public function getModels(): string|array|null;
```

Returns the models involved in the query

<h4 id="mvcmodelquerybuilderinterface-getoffset"><code>getOffset()</code></h4>

```php
public function getOffset(): int;
```

Returns the current OFFSET clause

<h4 id="mvcmodelquerybuilderinterface-getorderby"><code>getOrderBy()</code></h4>

```php
public function getOrderBy();
```

Return the set ORDER BY clause

<h4 id="mvcmodelquerybuilderinterface-getphql"><code>getPhql()</code></h4>

```php
public function getPhql(): string;
```

Returns a PHQL statement built based on the builder parameters

<h4 id="mvcmodelquerybuilderinterface-getquery"><code>getQuery()</code></h4>

```php
public function getQuery(): QueryInterface;
```

Returns the query built

<h4 id="mvcmodelquerybuilderinterface-getwhere"><code>getWhere()</code></h4>

```php
public function getWhere();
```

Return the conditions for the query

<h4 id="mvcmodelquerybuilderinterface-groupby"><code>groupBy()</code></h4>

```php
public function groupBy( mixed $group ): BuilderInterface;
```

Sets a GROUP BY clause

<h4 id="mvcmodelquerybuilderinterface-having"><code>having()</code></h4>

```php
public function having(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Sets a HAVING condition clause

<h4 id="mvcmodelquerybuilderinterface-inwhere"><code>inWhere()</code></h4>

```php
public function inWhere(
string $expr,
array $values,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends an IN condition to the current conditions

<h4 id="mvcmodelquerybuilderinterface-innerjoin"><code>innerJoin()</code></h4>

```php
public function innerJoin(
string $model,
string|null $conditions = null,
string|null $alias = null
): BuilderInterface;
```

Adds an INNER join to the query

<h4 id="mvcmodelquerybuilderinterface-join"><code>join()</code></h4>

```php
public function join(
string $model,
string|null $conditions = null,
string|null $alias = null
): BuilderInterface;
```

Adds an :type: join (by default type - INNER) to the query

<h4 id="mvcmodelquerybuilderinterface-leftjoin"><code>leftJoin()</code></h4>

```php
public function leftJoin(
string $model,
string|null $conditions = null,
string|null $alias = null
): BuilderInterface;
```

Adds a LEFT join to the query

<h4 id="mvcmodelquerybuilderinterface-limit"><code>limit()</code></h4>

```php
public function limit(
int $limit,
mixed $offset = null
): BuilderInterface;
```

Sets a LIMIT clause

<h4 id="mvcmodelquerybuilderinterface-notbetweenwhere"><code>notBetweenWhere()</code></h4>

```php
public function notBetweenWhere(
string $expr,
mixed $minimum,
mixed $maximum,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a NOT BETWEEN condition to the current conditions

<h4 id="mvcmodelquerybuilderinterface-notinwhere"><code>notInWhere()</code></h4>

```php
public function notInWhere(
string $expr,
array $values,
string $operator = BuilderInterface::OPERATOR_AND
): BuilderInterface;
```

Appends a NOT IN condition to the current conditions

<h4 id="mvcmodelquerybuilderinterface-offset"><code>offset()</code></h4>

```php
public function offset( int $offset ): BuilderInterface;
```

Sets an OFFSET clause

<h4 id="mvcmodelquerybuilderinterface-orwhere"><code>orWhere()</code></h4>

```php
public function orWhere(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Appends a condition to the current conditions using an OR operator

<h4 id="mvcmodelquerybuilderinterface-orderby"><code>orderBy()</code></h4>

```php
public function orderBy( mixed $orderBy ): BuilderInterface;
```

Sets an ORDER BY condition clause

<h4 id="mvcmodelquerybuilderinterface-rightjoin"><code>rightJoin()</code></h4>

```php
public function rightJoin(
string $model,
string|null $conditions = null,
string|null $alias = null
): BuilderInterface;
```

Adds a RIGHT join to the query

<h4 id="mvcmodelquerybuilderinterface-setbindparams"><code>setBindParams()</code></h4>

```php
public function setBindParams(
array $bindParams,
bool $merge = false
): BuilderInterface;
```

Set default bind parameters

<h4 id="mvcmodelquerybuilderinterface-setbindtypes"><code>setBindTypes()</code></h4>

```php
public function setBindTypes(
array $bindTypes,
bool $merge = false
): BuilderInterface;
```

Set default bind types

<h4 id="mvcmodelquerybuilderinterface-where"><code>where()</code></h4>

```php
public function where(
string $conditions,
array $bindParams = [],
array $bindTypes = []
): BuilderInterface;
```

Sets conditions for the query

## Mvc\Model\Query\Exceptions\AmbiguousColumn

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/AmbiguousColumn.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\AmbiguousColumn`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsambiguouscolumn-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsambiguouscolumn-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $phql
);
```

## Mvc\Model\Query\Exceptions\AmbiguousJoinRelation

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/AmbiguousJoinRelation.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\AmbiguousJoinRelation`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsambiguousjoinrelation-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$from</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$join</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsambiguousjoinrelation-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $from,
string $join,
string $phql
);
```

## Mvc\Model\Query\Exceptions\BindParameterNotInPlaceholders

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/BindParameterNotInPlaceholders.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\BindParameterNotInPlaceholders`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbindparameternotinplaceholders-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$wildcard</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbindparameternotinplaceholders-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $wildcard );
```

## Mvc\Model\Query\Exceptions\BindTypeRequiresArray

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/BindTypeRequiresArray.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\BindTypeRequiresArray`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbindtyperequiresarray-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbindtyperequiresarray-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $name );
```

## Mvc\Model\Query\Exceptions\BindValueRequired

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/BindValueRequired.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\BindValueRequired`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbindvaluerequired-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbindvaluerequired-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $name );
```

## Mvc\Model\Query\Exceptions\Builder\BuilderColumnNotInMap

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/Builder/BuilderColumnNotInMap.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\Builder\BuilderColumnNotInMap`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbuilderbuildercolumnnotinmap-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$column</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbuilderbuildercolumnnotinmap-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $column );
```

## Mvc\Model\Query\Exceptions\Builder\BuilderConditionInvalid

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/Builder/BuilderConditionInvalid.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\Builder\BuilderConditionInvalid`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbuilderbuilderconditioninvalid-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbuilderbuilderconditioninvalid-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\Builder\ModelRequired

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/Builder/ModelRequired.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\Builder\ModelRequired`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbuildermodelrequired-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbuildermodelrequired-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\Builder\NoPrimaryKey

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/Builder/NoPrimaryKey.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\Builder\NoPrimaryKey`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbuildernoprimarykey-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbuildernoprimarykey-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\Builder\OperatorNotAvailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/Builder/OperatorNotAvailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\Builder\OperatorNotAvailable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsbuilderoperatornotavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$operator</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsbuilderoperatornotavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $operator );
```

## Mvc\Model\Query\Exceptions\ColumnNotInDomain

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ColumnNotInDomain.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ColumnNotInDomain`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionscolumnnotindomain-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionscolumnnotindomain-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $model,
string $phql
);
```

## Mvc\Model\Query\Exceptions\ColumnNotInSelectedModels

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ColumnNotInSelectedModels.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ColumnNotInSelectedModels`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionscolumnnotinselectedmodels-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$tag</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionscolumnnotinselectedmodels-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $tag,
string $phql
);
```

## Mvc\Model\Query\Exceptions\CorruptedAst

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/CorruptedAst.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\CorruptedAst`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionscorruptedast-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionscorruptedast-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\CorruptedDeleteAst

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/CorruptedDeleteAst.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\CorruptedDeleteAst`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionscorrupteddeleteast-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionscorrupteddeleteast-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\CorruptedInsertAst

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/CorruptedInsertAst.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\CorruptedInsertAst`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionscorruptedinsertast-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionscorruptedinsertast-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\CorruptedSelectAst

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/CorruptedSelectAst.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\CorruptedSelectAst`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionscorruptedselectast-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionscorruptedselectast-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\CorruptedUpdateAst

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/CorruptedUpdateAst.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\CorruptedUpdateAst`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionscorruptedupdateast-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionscorruptedupdateast-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\DeleteMultipleNotSupported

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/DeleteMultipleNotSupported.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\DeleteMultipleNotSupported`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsdeletemultiplenotsupported-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsdeletemultiplenotsupported-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\DuplicateAlias

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/DuplicateAlias.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\DuplicateAlias`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsduplicatealias-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsduplicatealias-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $phql
);
```

## Mvc\Model\Query\Exceptions\EmptyArrayPlaceholderValue

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/EmptyArrayPlaceholderValue.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\EmptyArrayPlaceholderValue`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsemptyarrayplaceholdervalue-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsemptyarrayplaceholdervalue-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $name );
```

## Mvc\Model\Query\Exceptions\InsertColumnCountMismatch

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InsertColumnCountMismatch.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InsertColumnCountMismatch`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinsertcolumncountmismatch-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinsertcolumncountmismatch-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\InvalidCachedResultset

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidCachedResultset.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidCachedResultset`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidcachedresultset-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidcachedresultset-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\InvalidCachingOptions

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidCachingOptions.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidCachingOptions`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidcachingoptions-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidcachingoptions-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\InvalidColumnDefinition

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidColumnDefinition.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidColumnDefinition`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidcolumndefinition-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidcolumndefinition-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\InvalidInjectedManager

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidInjectedManager.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidInjectedManager`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidinjectedmanager-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidinjectedmanager-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\InvalidInjectedMetadata

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidInjectedMetadata.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidInjectedMetadata`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidinjectedmetadata-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidinjectedmetadata-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\InvalidQueryCacheService

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidQueryCacheService.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidQueryCacheService`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidquerycacheservice-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidquerycacheservice-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\InvalidResultsetClass

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidResultsetClass.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidResultsetClass`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidresultsetclass-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidresultsetclass-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Query\Exceptions\InvalidResultsetRowClass

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/InvalidResultsetRowClass.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\InvalidResultsetRowClass`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsinvalidresultsetrowclass-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsinvalidresultsetrowclass-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Query\Exceptions\JoinAliasAlreadyUsed

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/JoinAliasAlreadyUsed.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\JoinAliasAlreadyUsed`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsjoinaliasalreadyused-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$alias</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsjoinaliasalreadyused-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $alias,
string $phql
);
```

## Mvc\Model\Query\Exceptions\JoinFieldCountMismatch

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/JoinFieldCountMismatch.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\JoinFieldCountMismatch`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsjoinfieldcountmismatch-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$join</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsjoinfieldcountmismatch-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $model,
string $join,
string $phql
);
```

## Mvc\Model\Query\Exceptions\MissingCacheKey

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/MissingCacheKey.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\MissingCacheKey`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmissingcachekey-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmissingcachekey-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\MissingMetaData

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/MissingMetaData.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\MissingMetaData`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmissingmetadata-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmissingmetadata-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\MissingModelAttribute

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/MissingModelAttribute.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\MissingModelAttribute`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmissingmodelattribute-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$attribute</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmissingmodelattribute-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $model,
string $attribute,
string $phql
);
```

## Mvc\Model\Query\Exceptions\MissingModelsManager

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/MissingModelsManager.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\MissingModelsManager`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmissingmodelsmanager-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmissingmodelsmanager-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\MixedDatabaseSystems

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/MixedDatabaseSystems.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\MixedDatabaseSystems`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmixeddatabasesystems-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmixeddatabasesystems-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\ModelSourceNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ModelSourceNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ModelSourceNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmodelsourcenotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmodelsourcenotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $phql
);
```

## Mvc\Model\Query\Exceptions\ModelsListNotLoaded

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ModelsListNotLoaded.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ModelsListNotLoaded`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmodelslistnotloaded-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmodelslistnotloaded-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\MultipleSqlStatementsNotSupported

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/MultipleSqlStatementsNotSupported.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\MultipleSqlStatementsNotSupported`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsmultiplesqlstatementsnotsupported-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsmultiplesqlstatementsnotsupported-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\NoModelForAlias

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/NoModelForAlias.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\NoModelForAlias`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsnomodelforalias-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsnomodelforalias-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $model,
string $phql
);
```

## Mvc\Model\Query\Exceptions\PhqlColumnNotInMap

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/PhqlColumnNotInMap.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\PhqlColumnNotInMap`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsphqlcolumnnotinmap-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$fieldName</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsphqlcolumnnotinmap-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $fieldName );
```

## Mvc\Model\Query\Exceptions\ReadConnectionMissing

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ReadConnectionMissing.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ReadConnectionMissing`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsreadconnectionmissing-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsreadconnectionmissing-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\RelationshipNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/RelationshipNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\RelationshipNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsrelationshipnotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$relationship</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsrelationshipnotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $model,
string $relationship,
string $phql
);
```

## Mvc\Model\Query\Exceptions\ResultsetClassNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ResultsetClassNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ResultsetClassNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsresultsetclassnotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsresultsetclassnotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Query\Exceptions\ResultsetNonCacheable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ResultsetNonCacheable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ResultsetNonCacheable`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsresultsetnoncacheable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsresultsetnoncacheable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\ResultsetRowClassNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/ResultsetRowClassNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\ResultsetRowClassNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsresultsetrowclassnotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$className</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsresultsetrowclassnotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $className );
```

## Mvc\Model\Query\Exceptions\UnknownBindType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UnknownBindType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UnknownBindType`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsunknownbindtype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$type</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsunknownbindtype-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $type );
```

## Mvc\Model\Query\Exceptions\UnknownColumnType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UnknownColumnType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UnknownColumnType`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsunknowncolumntype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$type</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsunknowncolumntype-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $type );
```

## Mvc\Model\Query\Exceptions\UnknownJoinType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UnknownJoinType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UnknownJoinType`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsunknownjointype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsunknownjointype-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $type,
string $phql
);
```

## Mvc\Model\Query\Exceptions\UnknownModelOrAlias

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UnknownModelOrAlias.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UnknownModelOrAlias`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsunknownmodeloralias-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$tag</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$phql</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsunknownmodeloralias-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $model,
string $tag,
string $phql
);
```

## Mvc\Model\Query\Exceptions\UnknownPhqlExpression

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UnknownPhqlExpression.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlExpression`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsunknownphqlexpression-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsunknownphqlexpression-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\UnknownPhqlExpressionType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UnknownPhqlExpressionType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlExpressionType`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsunknownphqlexpressiontype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$type</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsunknownphqlexpressiontype-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $type );
```

## Mvc\Model\Query\Exceptions\UnknownPhqlStatement

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UnknownPhqlStatement.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UnknownPhqlStatement`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsunknownphqlstatement-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$type</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsunknownphqlstatement-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $type );
```

## Mvc\Model\Query\Exceptions\UpdateMultipleNotSupported

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/UpdateMultipleNotSupported.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\UpdateMultipleNotSupported`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionsupdatemultiplenotsupported-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionsupdatemultiplenotsupported-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Exceptions\WriteConnectionMissing

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Exceptions/WriteConnectionMissing.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Query\Exceptions\WriteConnectionMissing`**

</div>

__Uses__ `Phalcon\Mvc\Model\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelqueryexceptionswriteconnectionmissing-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelqueryexceptionswriteconnectionmissing-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Model\Query\Lang

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Lang.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Query\Lang

PHQL is implemented as a parser (written in C) that translates syntax in
that of the target RDBMS. It allows Phalcon to offer a unified SQL language to
the developer, while internally doing all the work of translating PHQL
instructions to the most optimal SQL instructions depending on the
RDBMS type associated with a model.

To achieve the highest performance possible, we wrote a parser that uses
the same technology as SQLite. This technology provides a small in-memory
parser with a very low memory footprint that is also thread-safe.

```php
use Phalcon\Mvc\Model\Query\Lang;

$intermediate = Lang::parsePHQL(
"SELECT r.* FROM Invoices r LIMIT 10"
);
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Query\Lang`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelquerylang-parsephql">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">parsePHQL</span>( <span class="st">string</span> <span class="sv">$phql</span> )</code>
<span class="desc">Parses a PHQL statement returning an intermediate representation (IR)</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelquerylang-parsephql"><code>parsePHQL()</code></h4>

```php
public static function parsePHQL( string $phql ): array;
```

Parses a PHQL statement returning an intermediate representation (IR)

## Mvc\Model\Query\Status

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/Status.zep">Source on GitHub</a>

This class represents the status returned by a PHQL
statement like INSERT, UPDATE or DELETE. It offers context
information and the related messages produced by the
model which finally executes the operations when it fails

```php
$phql = "UPDATE Invoices SET inv_title = :inv_title:, inv_status_flag = :inv_status_flag:, inv_total = :inv_total: WHERE inv_id = :inv_id:";

$status = $app->modelsManager->executeQuery(
$phql,
[
    "inv_id"          => 100,
    "inv_title"       => "Test Invoice",
    "inv_status_flag" => 1,
    "inv_total"       => 1959,
]
);

// Check if the update was successful
if ($status->success()) {
echo "OK";
}
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Query\Status`** - implements [`Phalcon\Mvc\Model\Query\StatusInterface`](#mvcmodelquerystatusinterface)

</div>

__Uses__ `Phalcon\Messages\MessageInterface` · `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelquerystatus-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">bool</span> <span class="sv">$success</span>,</span><span class="prm"><span class="st">ModelInterface|null</span> <span class="sv">$model</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Query\Status</span>
</a>
<a class="api-item" href="#mvcmodelquerystatus-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">MessageInterface[]</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns the messages produced because of a failed operation</span>
</a>
<a class="api-item" href="#mvcmodelquerystatus-getmodel">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sf">getModel</span>()</code>
<span class="desc">Returns the model that executed the action</span>
</a>
<a class="api-item" href="#mvcmodelquerystatus-success">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">success</span>()</code>
<span class="desc">Allows to check if the executed operation was successful</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sv">$model</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$success</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 4</div>

<h4 id="mvcmodelquerystatus-__construct"><code>__construct()</code></h4>

```php
public function __construct(
bool $success,
ModelInterface|null $model = null
);
```

Phalcon\Mvc\Model\Query\Status

<h4 id="mvcmodelquerystatus-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): MessageInterface[];
```

Returns the messages produced because of a failed operation

<h4 id="mvcmodelquerystatus-getmodel"><code>getModel()</code></h4>

```php
public function getModel(): ModelInterface|null;
```

Returns the model that executed the action

<h4 id="mvcmodelquerystatus-success"><code>success()</code></h4>

```php
public function success(): bool;
```

Allows to check if the executed operation was successful

## Mvc\Model\Query\StatusInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Query/StatusInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\Model\Query\Status

<div class="api-tree">

- **`Phalcon\Mvc\Model\Query\StatusInterface`**

</div>

__Uses__ `Phalcon\Messages\MessageInterface` · `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelquerystatusinterface-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">MessageInterface[]</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns the messages produced by an operation failed</span>
</a>
<a class="api-item" href="#mvcmodelquerystatusinterface-getmodel">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sf">getModel</span>()</code>
<span class="desc">Returns the model which executed the action</span>
</a>
<a class="api-item" href="#mvcmodelquerystatusinterface-success">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">success</span>()</code>
<span class="desc">Allows to check if the executed operation was successful</span>
</a>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="mvcmodelquerystatusinterface-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): MessageInterface[];
```

Returns the messages produced by an operation failed

<h4 id="mvcmodelquerystatusinterface-getmodel"><code>getModel()</code></h4>

```php
public function getModel(): ModelInterface|null;
```

Returns the model which executed the action

<h4 id="mvcmodelquerystatusinterface-success"><code>success()</code></h4>

```php
public function success(): bool;
```

Allows to check if the executed operation was successful

## Mvc\Model\Relation

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Relation.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Relation

This class represents a relationship between two models

<div class="api-tree">

- **`Phalcon\Mvc\Model\Relation`** - implements [`Phalcon\Mvc\Model\RelationInterface`](#mvcmodelrelationinterface)

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelrelation-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">int</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$referencedModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$fields</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$referencedFields</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Relation constructor</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getfields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getFields</span>()</code>
<span class="desc">Returns the fields</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getforeignkey">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getForeignKey</span>()</code>
<span class="desc">Returns the foreign key configuration</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getintermediatefields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getIntermediateFields</span>()</code>
<span class="desc">Gets the intermediate fields for has-*-through relations</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getintermediatemodel">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getIntermediateModel</span>()</code>
<span class="desc">Gets the intermediate model for has-*-through relations</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getintermediatereferencedfields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getIntermediateReferencedFields</span>()</code>
<span class="desc">Gets the intermediate referenced fields for has-*-through relations</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getoption">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getOption</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
<span class="desc">Returns an option by the specified name</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getoptions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOptions</span>()</code>
<span class="desc">Returns the options</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getparams">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getParams</span>()</code>
<span class="desc">Returns parameters that must be always used when the related records are obtained</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getreferencedfields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getReferencedFields</span>()</code>
<span class="desc">Returns the referenced fields</span>
</a>
<a class="api-item" href="#mvcmodelrelation-getreferencedmodel">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getReferencedModel</span>()</code>
<span class="desc">Returns the referenced model</span>
</a>
<a class="api-item" href="#mvcmodelrelation-gettype">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getType</span>()</code>
<span class="desc">Returns the relation type</span>
</a>
<a class="api-item" href="#mvcmodelrelation-isforeignkey">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isForeignKey</span>()</code>
<span class="desc">Check whether the relation act as a foreign key</span>
</a>
<a class="api-item" href="#mvcmodelrelation-isreusable">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isReusable</span>()</code>
<span class="desc">Check if records returned by getting belongs-to/has-many are implicitly cached during the current request</span>
</a>
<a class="api-item" href="#mvcmodelrelation-isthrough">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isThrough</span>()</code>
<span class="desc">Check whether the relation is a &#039;many-to-many&#039; relation or not</span>
</a>
<a class="api-item" href="#mvcmodelrelation-setintermediaterelation">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setIntermediateRelation</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span></span>)</code>
<span class="desc">Sets the intermediate model data for has-*-through relations</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">ACTION_CASCADE</span><span class="sm"> = 2</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">ACTION_RESTRICT</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">BELONGS_TO</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">HAS_MANY</span><span class="sm"> = 2</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">HAS_MANY_THROUGH</span><span class="sm"> = 4</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">HAS_ONE</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">HAS_ONE_THROUGH</span><span class="sm"> = 3</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">NO_ACTION</span><span class="sm"> = 0</span></code>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$fields</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$intermediateFields</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$intermediateModel</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$intermediateReferencedFields</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$options</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$referencedFields</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$referencedModel</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$type</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 16</div>

<h4 id="mvcmodelrelation-__construct"><code>__construct()</code></h4>

```php
public function __construct(
int $type,
string $referencedModel,
mixed $fields,
mixed $referencedFields,
array $options = []
);
```

Phalcon\Mvc\Model\Relation constructor

<h4 id="mvcmodelrelation-getfields"><code>getFields()</code></h4>

```php
public function getFields();
```

Returns the fields

<h4 id="mvcmodelrelation-getforeignkey"><code>getForeignKey()</code></h4>

```php
public function getForeignKey();
```

Returns the foreign key configuration

<h4 id="mvcmodelrelation-getintermediatefields"><code>getIntermediateFields()</code></h4>

```php
public function getIntermediateFields();
```

Gets the intermediate fields for has-*-through relations

<h4 id="mvcmodelrelation-getintermediatemodel"><code>getIntermediateModel()</code></h4>

```php
public function getIntermediateModel(): string;
```

Gets the intermediate model for has-*-through relations

<h4 id="mvcmodelrelation-getintermediatereferencedfields"><code>getIntermediateReferencedFields()</code></h4>

```php
public function getIntermediateReferencedFields();
```

Gets the intermediate referenced fields for has-*-through relations

<h4 id="mvcmodelrelation-getoption"><code>getOption()</code></h4>

```php
public function getOption( string $name );
```

Returns an option by the specified name
If the option does not exist null is returned

<h4 id="mvcmodelrelation-getoptions"><code>getOptions()</code></h4>

```php
public function getOptions(): array;
```

Returns the options

<h4 id="mvcmodelrelation-getparams"><code>getParams()</code></h4>

```php
public function getParams();
```

Returns parameters that must be always used when the related records are obtained

<h4 id="mvcmodelrelation-getreferencedfields"><code>getReferencedFields()</code></h4>

```php
public function getReferencedFields();
```

Returns the referenced fields

<h4 id="mvcmodelrelation-getreferencedmodel"><code>getReferencedModel()</code></h4>

```php
public function getReferencedModel(): string;
```

Returns the referenced model

<h4 id="mvcmodelrelation-gettype"><code>getType()</code></h4>

```php
public function getType(): int;
```

Returns the relation type

<h4 id="mvcmodelrelation-isforeignkey"><code>isForeignKey()</code></h4>

```php
public function isForeignKey(): bool;
```

Check whether the relation act as a foreign key

<h4 id="mvcmodelrelation-isreusable"><code>isReusable()</code></h4>

```php
public function isReusable(): bool;
```

Check if records returned by getting belongs-to/has-many are implicitly cached during the current request

<h4 id="mvcmodelrelation-isthrough"><code>isThrough()</code></h4>

```php
public function isThrough(): bool;
```

Check whether the relation is a 'many-to-many' relation or not

<h4 id="mvcmodelrelation-setintermediaterelation"><code>setIntermediateRelation()</code></h4>

```php
public function setIntermediateRelation(
mixed $intermediateFields,
string $intermediateModel,
mixed $intermediateReferencedFields
);
```

Sets the intermediate model data for has-*-through relations

## Mvc\Model\RelationInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/RelationInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\RelationInterface

Interface for Phalcon\Mvc\Model\Relation

<div class="api-tree">

- **`Phalcon\Mvc\Model\RelationInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelrelationinterface-getfields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getFields</span>()</code>
<span class="desc">Returns the fields</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getforeignkey">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getForeignKey</span>()</code>
<span class="desc">Returns the foreign key configuration</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getintermediatefields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getIntermediateFields</span>()</code>
<span class="desc">Gets the intermediate fields for has-*-through relations</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getintermediatemodel">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getIntermediateModel</span>()</code>
<span class="desc">Gets the intermediate model for has-*-through relations</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getintermediatereferencedfields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getIntermediateReferencedFields</span>()</code>
<span class="desc">Gets the intermediate referenced fields for has-*-through relations</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getoption">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getOption</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
<span class="desc">Returns an option by the specified name</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getoptions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOptions</span>()</code>
<span class="desc">Returns the options</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getparams">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getParams</span>()</code>
<span class="desc">Returns parameters that must be always used when the related records are obtained</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getreferencedfields">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getReferencedFields</span>()</code>
<span class="desc">Returns the referenced fields</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-getreferencedmodel">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getReferencedModel</span>()</code>
<span class="desc">Returns the referenced model</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-gettype">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getType</span>()</code>
<span class="desc">Returns the relations type</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-isforeignkey">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isForeignKey</span>()</code>
<span class="desc">Check whether the relation act as a foreign key</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-isreusable">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isReusable</span>()</code>
<span class="desc">Check if records returned by getting belongs-to/has-many are implicitly cached during the current request</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-isthrough">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isThrough</span>()</code>
<span class="desc">Check whether the relation is a &#039;many-to-many&#039; relation or not</span>
</a>
<a class="api-item" href="#mvcmodelrelationinterface-setintermediaterelation">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setIntermediateRelation</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateFields</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$intermediateModel</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$intermediateReferencedFields</span></span>)</code>
<span class="desc">Sets the intermediate model data for has-*-through relations</span>
</a>
</div>

### Methods

<div class="api-group">Public · 15</div>

<h4 id="mvcmodelrelationinterface-getfields"><code>getFields()</code></h4>

```php
public function getFields();
```

Returns the fields

<h4 id="mvcmodelrelationinterface-getforeignkey"><code>getForeignKey()</code></h4>

```php
public function getForeignKey();
```

Returns the foreign key configuration

<h4 id="mvcmodelrelationinterface-getintermediatefields"><code>getIntermediateFields()</code></h4>

```php
public function getIntermediateFields();
```

Gets the intermediate fields for has-*-through relations

<h4 id="mvcmodelrelationinterface-getintermediatemodel"><code>getIntermediateModel()</code></h4>

```php
public function getIntermediateModel(): string;
```

Gets the intermediate model for has-*-through relations

<h4 id="mvcmodelrelationinterface-getintermediatereferencedfields"><code>getIntermediateReferencedFields()</code></h4>

```php
public function getIntermediateReferencedFields();
```

Gets the intermediate referenced fields for has-*-through relations

<h4 id="mvcmodelrelationinterface-getoption"><code>getOption()</code></h4>

```php
public function getOption( string $name );
```

Returns an option by the specified name
If the option does not exist null is returned

<h4 id="mvcmodelrelationinterface-getoptions"><code>getOptions()</code></h4>

```php
public function getOptions(): array;
```

Returns the options

<h4 id="mvcmodelrelationinterface-getparams"><code>getParams()</code></h4>

```php
public function getParams();
```

Returns parameters that must be always used when the related records are obtained

<h4 id="mvcmodelrelationinterface-getreferencedfields"><code>getReferencedFields()</code></h4>

```php
public function getReferencedFields();
```

Returns the referenced fields

<h4 id="mvcmodelrelationinterface-getreferencedmodel"><code>getReferencedModel()</code></h4>

```php
public function getReferencedModel(): string;
```

Returns the referenced model

<h4 id="mvcmodelrelationinterface-gettype"><code>getType()</code></h4>

```php
public function getType(): int;
```

Returns the relations type

<h4 id="mvcmodelrelationinterface-isforeignkey"><code>isForeignKey()</code></h4>

```php
public function isForeignKey(): bool;
```

Check whether the relation act as a foreign key

<h4 id="mvcmodelrelationinterface-isreusable"><code>isReusable()</code></h4>

```php
public function isReusable(): bool;
```

Check if records returned by getting belongs-to/has-many are implicitly cached during the current request

<h4 id="mvcmodelrelationinterface-isthrough"><code>isThrough()</code></h4>

```php
public function isThrough(): bool;
```

Check whether the relation is a 'many-to-many' relation or not

<h4 id="mvcmodelrelationinterface-setintermediaterelation"><code>setIntermediateRelation()</code></h4>

```php
public function setIntermediateRelation(
mixed $intermediateFields,
string $intermediateModel,
mixed $intermediateReferencedFields
);
```

Sets the intermediate model data for has-*-through relations

## Mvc\Model\ResultInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/ResultInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\ResultInterface

All single objects passed as base objects to Resultsets must implement this interface

<div class="api-tree">

- **`Phalcon\Mvc\Model\ResultInterface`**

</div>

__Uses__ `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelresultinterface-setdirtystate">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|bool</code>
<code class="sig"><span class="sf">setDirtyState</span>( <span class="st">int</span> <span class="sv">$dirtyState</span> )</code>
<span class="desc">Sets the object&#039;s state</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcmodelresultinterface-setdirtystate"><code>setDirtyState()</code></h4>

```php
public function setDirtyState( int $dirtyState ): ModelInterface|bool;
```

Sets the object's state

## Mvc\Model\Resultset

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Resultset.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Resultset

This component allows to Phalcon\Mvc\Model returns large resultsets with the minimum memory consumption
Resultsets can be traversed using a standard foreach or a while statement. If a resultset is serialized
it will dump all the rows into a big array. Then unserialize will retrieve the rows as they were before
serializing.

```php

// Using a standard foreach
$invoices = Invoices::find(
[
    "inv_status_flag = 1",
    "order" => "inv_title",
]
);

foreach ($invoices as invoice) {
echo invoice->inv_title, "\n";
}

// Using a while
$invoices = Invoices::find(
[
    "inv_status_flag = 1",
    "order" => "inv_title",
]
);

$invoices->rewind();

while ($invoices->valid()) {
$invoice = $invoices->current();

echo $invoice->inv_title, "\n";

$invoices->next();
}
```
@template TKey
@template TValue
@implements Iterator&lt;TKey, TValue>
@implements ArrayAccess&lt;TKey, TValue>

<div class="api-tree">

- **`Phalcon\Mvc\Model\Resultset`** - implements [`Phalcon\Mvc\Model\ResultsetInterface`](#mvcmodelresultsetinterface), `\Iterator`, `\SeekableIterator`, `\Countable`, `\ArrayAccess`, `\JsonSerializable`
- [`Phalcon\Mvc\Model\Resultset\Complex`](#mvcmodelresultsetcomplex)
- [`Phalcon\Mvc\Model\Resultset\Simple`](#mvcmodelresultsetsimple)

</div>

__Uses__ `ArrayAccess` · `Closure` · `Countable` · `Iterator` · `JsonSerializable` · `Phalcon\Cache\CacheInterface` · `Phalcon\Db\Enum` · `Phalcon\Messages\MessageInterface` · `Phalcon\Mvc\Model` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Exceptions\CursorIsImmutable` · `Phalcon\Mvc\Model\Exceptions\IndexNotInCursor` · `Phalcon\Mvc\Model\Exceptions\InvalidResultsetCacheService` · `Phalcon\Mvc\Model\Exceptions\InvalidReturnedRecord` · `Phalcon\Storage\Serializer\SerializerInterface` · `Phalcon\Support\Settings` · `SeekableIterator`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelresultset-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$result</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$cache</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Resultset constructor</span>
</a>
<a class="api-item" href="#mvcmodelresultset-count">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">count</span>()</code>
<span class="desc">Counts how many rows are in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-delete">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">delete</span>( <span class="st">Closure|null</span> <span class="sv">$conditionCallback</span><span class="sm"> = null</span> )</code>
<span class="desc">Deletes every record in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-filter">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface[]</code>
<code class="sig"><span class="sf">filter</span>( <span class="st">callable</span> <span class="sv">$filter</span> )</code>
<span class="desc">Filters a resultset returning only those the developer requires</span>
</a>
<a class="api-item" href="#mvcmodelresultset-getcache">
<code class="vis vis-public">public</code>
<code class="ret">CacheInterface|null</code>
<code class="sig"><span class="sf">getCache</span>()</code>
<span class="desc">Returns the associated cache for the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-getfirst">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">getFirst</span>()</code>
<span class="desc">Get first row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-gethydratemode">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getHydrateMode</span>()</code>
<span class="desc">Returns the current hydration mode</span>
</a>
<a class="api-item" href="#mvcmodelresultset-getlast">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sf">getLast</span>()</code>
<span class="desc">Get last row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">MessageInterface[]</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns the error messages produced by a batch operation</span>
</a>
<a class="api-item" href="#mvcmodelresultset-getresult">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">getResult</span>()</code>
</a>
<a class="api-item" href="#mvcmodelresultset-gettype">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getType</span>()</code>
<span class="desc">Returns the internal type of data retrieval that the resultset is using</span>
</a>
<a class="api-item" href="#mvcmodelresultset-isfresh">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isFresh</span>()</code>
<span class="desc">Tell if the resultset if fresh or an old one cached</span>
</a>
<a class="api-item" href="#mvcmodelresultset-jsonserialize">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">jsonSerialize</span>()</code>
<span class="desc">Returns serialised model objects as array for json_encode.</span>
</a>
<a class="api-item" href="#mvcmodelresultset-key">
<code class="vis vis-public">public</code>
<code class="ret">int|null</code>
<code class="sig"><span class="sf">key</span>()</code>
<span class="desc">Gets pointer number of active row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-materialize">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">materialize</span>()</code>
<span class="desc">Fetches every remaining row of the underlying cursor into memory,</span>
</a>
<a class="api-item" href="#mvcmodelresultset-next">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">next</span>()</code>
<span class="desc">Moves cursor to next row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-offsetexists">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">offsetExists</span>( <span class="st">mixed</span> <span class="sv">$index</span> )</code>
<span class="desc">Checks whether offset exists in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-offsetget">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">offsetGet</span>( <span class="st">mixed</span> <span class="sv">$index</span> )</code>
<span class="desc">Gets row in a specific position of the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-offsetset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">offsetSet</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$offset</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface</span>
</a>
<a class="api-item" href="#mvcmodelresultset-offsetunset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">offsetUnset</span>( <span class="st">mixed</span> <span class="sv">$offset</span> )</code>
<span class="desc">Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface</span>
</a>
<a class="api-item" href="#mvcmodelresultset-refresh">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">refresh</span>()</code>
</a>
<a class="api-item" href="#mvcmodelresultset-rewind">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">rewind</span>()</code>
<span class="desc">Rewinds resultset to its beginning</span>
</a>
<a class="api-item" href="#mvcmodelresultset-seek">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">seek</span>( <span class="st">mixed</span> <span class="sv">$position</span> )</code>
<span class="desc">Changes the internal pointer to a specific position in the resultset.</span>
</a>
<a class="api-item" href="#mvcmodelresultset-sethydratemode">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">setHydrateMode</span>( <span class="st">int</span> <span class="sv">$hydrateMode</span> )</code>
<span class="desc">Sets the hydration mode in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-setisfresh">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">setIsFresh</span>( <span class="st">bool</span> <span class="sv">$isFresh</span> )</code>
<span class="desc">Set if the resultset is fresh or an old one cached</span>
</a>
<a class="api-item" href="#mvcmodelresultset-update">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">update</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">Closure|null</span> <span class="sv">$conditionCallback</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Updates every record in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultset-valid">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">valid</span>()</code>
<span class="desc">Check whether internal resource has rows to fetch</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">HYDRATE_ARRAYS</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">HYDRATE_OBJECTS</span><span class="sm"> = 2</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">HYDRATE_RECORDS</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">TYPE_RESULT_FULL</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">TYPE_RESULT_PARTIAL</span><span class="sm"> = 1</span></code>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sv">$activeRow</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">CacheInterface|null</code>
<code class="sig"><span class="sv">$cache</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int|null</code>
<code class="sig"><span class="sv">$count</span><span class="sm"> = null</span></code>
<span class="desc">Number of rows, or null while it has not been worked out yet. Resolved lazily by count() - asking the driver up front costs SQLite an extra statement on every single result-set.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$errorMessages</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$hydrateMode</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$isFresh</span><span class="sm"> = true</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$pointer</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ResultInterface|bool</code>
<code class="sig"><span class="sv">$result</span></code>
<span class="desc">Phalcon\Db\ResultInterface or false for empty resultset</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sv">$row</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sv">$rows</span><span class="sm"> = null</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 27</div>

<h4 id="mvcmodelresultset-__construct"><code>__construct()</code></h4>

```php
public function __construct(
mixed $result,
mixed $cache = null
);
```

Phalcon\Mvc\Model\Resultset constructor

<h4 id="mvcmodelresultset-count"><code>count()</code></h4>

```php
final public function count(): int;
```

Counts how many rows are in the resultset

<h4 id="mvcmodelresultset-delete"><code>delete()</code></h4>

```php
public function delete( Closure|null $conditionCallback = null ): bool;
```

Deletes every record in the resultset

<h4 id="mvcmodelresultset-filter"><code>filter()</code></h4>

```php
public function filter( callable $filter ): ModelInterface[];
```

Filters a resultset returning only those the developer requires

```php
$filtered = $invoices->filter(
function ($invoice) {
    if ($invoice->inv_id < 3) {
        return $invoice;
    }
}
);
```

<h4 id="mvcmodelresultset-getcache"><code>getCache()</code></h4>

```php
public function getCache(): CacheInterface|null;
```

Returns the associated cache for the resultset

<h4 id="mvcmodelresultset-getfirst"><code>getFirst()</code></h4>

```php
public function getFirst(): mixed|null;
```

Get first row in the resultset

```php
$model = new Invoices();
$manager = $model->getModelsManager();

// \Invoices
$manager->createQuery('SELECT * FROM Invoices')
    ->execute()
    ->getFirst();

// \Phalcon\Mvc\Model\Row
$manager->createQuery('SELECT r.inv_id FROM Invoices AS r')
    ->execute()
    ->getFirst();

// NULL
$manager->createQuery('SELECT r.inv_id FROM Invoices AS r WHERE r.inv_title = "NON-EXISTENT"')
    ->execute()
    ->getFirst();
```

<h4 id="mvcmodelresultset-gethydratemode"><code>getHydrateMode()</code></h4>

```php
public function getHydrateMode(): int;
```

Returns the current hydration mode

<h4 id="mvcmodelresultset-getlast"><code>getLast()</code></h4>

```php
public function getLast(): ModelInterface|null;
```

Get last row in the resultset

<h4 id="mvcmodelresultset-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): MessageInterface[];
```

Returns the error messages produced by a batch operation

<h4 id="mvcmodelresultset-getresult"><code>getResult()</code></h4>

```php
public function getResult(): mixed;
```

<h4 id="mvcmodelresultset-gettype"><code>getType()</code></h4>

```php
public function getType(): int;
```

Returns the internal type of data retrieval that the resultset is using

<h4 id="mvcmodelresultset-isfresh"><code>isFresh()</code></h4>

```php
public function isFresh(): bool;
```

Tell if the resultset if fresh or an old one cached

<h4 id="mvcmodelresultset-jsonserialize"><code>jsonSerialize()</code></h4>

```php
public function jsonSerialize(): array;
```

Returns serialised model objects as array for json_encode.
Calls jsonSerialize on each object if present

```php
$invoices = Invoices::find();

echo json_encode($invoices);
```

<h4 id="mvcmodelresultset-key"><code>key()</code></h4>

```php
public function key(): int|null;
```

Gets pointer number of active row in the resultset

<h4 id="mvcmodelresultset-materialize"><code>materialize()</code></h4>

```php
public function materialize(): void;
```

Fetches every remaining row of the underlying cursor into memory,
turning the resultset into TYPE_RESULT_FULL.

Free when called before the cursor has been advanced: the statement has
already been executed by Model\Query::executeSelect() and only the row
the constructor consumed is missing from the cursor, so no re-execution
takes place. Idempotent.

<h4 id="mvcmodelresultset-next"><code>next()</code></h4>

```php
public function next(): void;
```

Moves cursor to next row in the resultset

<h4 id="mvcmodelresultset-offsetexists"><code>offsetExists()</code></h4>

```php
public function offsetExists( mixed $index ): bool;
```

Checks whether offset exists in the resultset

<h4 id="mvcmodelresultset-offsetget"><code>offsetGet()</code></h4>

```php
public function offsetGet( mixed $index ): mixed;
```

Gets row in a specific position of the resultset

<h4 id="mvcmodelresultset-offsetset"><code>offsetSet()</code></h4>

```php
public function offsetSet(
mixed $offset,
mixed $value
): void;
```

Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface

<h4 id="mvcmodelresultset-offsetunset"><code>offsetUnset()</code></h4>

```php
public function offsetUnset( mixed $offset ): void;
```

Resultsets cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface

<h4 id="mvcmodelresultset-refresh"><code>refresh()</code></h4>

```php
public function refresh(): bool;
```

<h4 id="mvcmodelresultset-rewind"><code>rewind()</code></h4>

```php
final public function rewind(): void;
```

Rewinds resultset to its beginning

<h4 id="mvcmodelresultset-seek"><code>seek()</code></h4>

```php
final public function seek( mixed $position ): void;
```

Changes the internal pointer to a specific position in the resultset.
Set the new position if required, and then set this->row

<h4 id="mvcmodelresultset-sethydratemode"><code>setHydrateMode()</code></h4>

```php
public function setHydrateMode( int $hydrateMode ): ResultsetInterface;
```

Sets the hydration mode in the resultset

<h4 id="mvcmodelresultset-setisfresh"><code>setIsFresh()</code></h4>

```php
public function setIsFresh( bool $isFresh ): ResultsetInterface;
```

Set if the resultset is fresh or an old one cached

<h4 id="mvcmodelresultset-update"><code>update()</code></h4>

```php
public function update(
mixed $data,
Closure|null $conditionCallback = null
): bool;
```

Updates every record in the resultset

<h4 id="mvcmodelresultset-valid"><code>valid()</code></h4>

```php
public function valid(): bool;
```

Check whether internal resource has rows to fetch

Driven by the row the cursor is parked on rather than by the count, so
that a plain traversal never has to ask the driver how many rows there
are - on SQLite that answer costs a second statement.

## Mvc\Model\ResultsetInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/ResultsetInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\ResultsetInterface

Interface for Phalcon\Mvc\Model\Resultset

<div class="api-tree">

- **`Phalcon\Mvc\Model\ResultsetInterface`**

</div>

__Uses__ `Closure` · `Phalcon\Messages\MessageInterface` · `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelresultsetinterface-delete">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">delete</span>( <span class="st">Closure|null</span> <span class="sv">$conditionCallback</span><span class="sm"> = null</span> )</code>
<span class="desc">Deletes every record in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-filter">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface[]</code>
<code class="sig"><span class="sf">filter</span>( <span class="st">callable</span> <span class="sv">$filter</span> )</code>
<span class="desc">Filters a resultset returning only those the developer requires</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-getcache">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">getCache</span>()</code>
<span class="desc">Returns the associated cache for the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-getfirst">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">getFirst</span>()</code>
<span class="desc">Get first row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-gethydratemode">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getHydrateMode</span>()</code>
<span class="desc">Returns the current hydration mode</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-getlast">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sf">getLast</span>()</code>
<span class="desc">Get last row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">MessageInterface[]</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns the error messages produced by a batch operation</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-gettype">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getType</span>()</code>
<span class="desc">Returns the internal type of data retrieval that the resultset is using</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-isfresh">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isFresh</span>()</code>
<span class="desc">Tell if the resultset if fresh or an old one cached</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-sethydratemode">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">setHydrateMode</span>( <span class="st">int</span> <span class="sv">$hydrateMode</span> )</code>
<span class="desc">Sets the hydration mode in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-setisfresh">
<code class="vis vis-public">public</code>
<code class="ret">ResultsetInterface</code>
<code class="sig"><span class="sf">setIsFresh</span>( <span class="st">bool</span> <span class="sv">$isFresh</span> )</code>
<span class="desc">Set if the resultset is fresh or an old one cached</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-toarray">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">toArray</span>()</code>
<span class="desc">Returns a complete resultset as an array, if the resultset has a big number of rows</span>
</a>
<a class="api-item" href="#mvcmodelresultsetinterface-update">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">update</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$data</span>,</span><span class="prm"><span class="st">Closure|null</span> <span class="sv">$conditionCallback</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Updates every record in the resultset</span>
</a>
</div>

### Methods

<div class="api-group">Public · 13</div>

<h4 id="mvcmodelresultsetinterface-delete"><code>delete()</code></h4>

```php
public function delete( Closure|null $conditionCallback = null ): bool;
```

Deletes every record in the resultset

<h4 id="mvcmodelresultsetinterface-filter"><code>filter()</code></h4>

```php
public function filter( callable $filter ): ModelInterface[];
```

Filters a resultset returning only those the developer requires

```php
$filtered = $invoices->filter(
function ($invoice) {
    if ($invoice->inv_id < 3) {
        return $invoice;
    }
}
);
```

<h4 id="mvcmodelresultsetinterface-getcache"><code>getCache()</code></h4>

```php
public function getCache(): mixed|null;
```

Returns the associated cache for the resultset

<h4 id="mvcmodelresultsetinterface-getfirst"><code>getFirst()</code></h4>

```php
public function getFirst(): mixed|null;
```

Get first row in the resultset

<h4 id="mvcmodelresultsetinterface-gethydratemode"><code>getHydrateMode()</code></h4>

```php
public function getHydrateMode(): int;
```

Returns the current hydration mode

<h4 id="mvcmodelresultsetinterface-getlast"><code>getLast()</code></h4>

```php
public function getLast(): ModelInterface|null;
```

Get last row in the resultset

<h4 id="mvcmodelresultsetinterface-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): MessageInterface[];
```

Returns the error messages produced by a batch operation

<h4 id="mvcmodelresultsetinterface-gettype"><code>getType()</code></h4>

```php
public function getType(): int;
```

Returns the internal type of data retrieval that the resultset is using

<h4 id="mvcmodelresultsetinterface-isfresh"><code>isFresh()</code></h4>

```php
public function isFresh(): bool;
```

Tell if the resultset if fresh or an old one cached

<h4 id="mvcmodelresultsetinterface-sethydratemode"><code>setHydrateMode()</code></h4>

```php
public function setHydrateMode( int $hydrateMode ): ResultsetInterface;
```

Sets the hydration mode in the resultset

<h4 id="mvcmodelresultsetinterface-setisfresh"><code>setIsFresh()</code></h4>

```php
public function setIsFresh( bool $isFresh ): ResultsetInterface;
```

Set if the resultset is fresh or an old one cached

<h4 id="mvcmodelresultsetinterface-toarray"><code>toArray()</code></h4>

```php
public function toArray(): array;
```

Returns a complete resultset as an array, if the resultset has a big number of rows
it could consume more memory than currently it does.

<h4 id="mvcmodelresultsetinterface-update"><code>update()</code></h4>

```php
public function update(
mixed $data,
Closure|null $conditionCallback = null
): bool;
```

Updates every record in the resultset

## Mvc\Model\Resultset\Complex

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Resultset/Complex.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Resultset\Complex

Complex resultsets may include complete objects and scalar values.
This class builds every complex row as it is required

@template TKey of int
@template TValue of mixed

<div class="api-tree">

- [`Phalcon\Mvc\Model\Resultset`](#mvcmodelresultset)
- **`Phalcon\Mvc\Model\Resultset\Complex`**

</div>

__Uses__ `Phalcon\Db\ResultInterface` · `Phalcon\Di\Di` · `Phalcon\Di\DiInterface` · `Phalcon\Mvc\Model` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Exception` · `Phalcon\Mvc\Model\Exceptions\CorruptColumnType` · `Phalcon\Mvc\Model\Exceptions\InvalidContainer` · `Phalcon\Mvc\Model\Exceptions\InvalidSerializationData` · `Phalcon\Mvc\Model\Resultset` · `Phalcon\Mvc\Model\ResultsetInterface` · `Phalcon\Mvc\Model\Row` · `Phalcon\Storage\Serializer\SerializerInterface` · `Phalcon\Support\Settings` · `stdClass`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelresultsetcomplex-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$columnTypes</span>,</span><span class="prm"><span class="st">ResultInterface|null</span> <span class="sv">$result</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$cache</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$resultsetRowClass</span><span class="sm"> = &quot;&quot;</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Resultset\Complex constructor</span>
</a>
<a class="api-item" href="#mvcmodelresultsetcomplex-__serialize">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">__serialize</span>()</code>
</a>
<a class="api-item" href="#mvcmodelresultsetcomplex-__unserialize">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">__unserialize</span>( <span class="st">array</span> <span class="sv">$data</span> )</code>
</a>
<a class="api-item" href="#mvcmodelresultsetcomplex-current">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">current</span>()</code>
<span class="desc">Returns current row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultsetcomplex-serialize">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">serialize</span>()</code>
<span class="desc">Serializing a resultset will dump all related rows into a big array,</span>
</a>
<a class="api-item" href="#mvcmodelresultsetcomplex-toarray">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">toArray</span>()</code>
<span class="desc">Returns a complete resultset as an array, if the resultset has a big</span>
</a>
<a class="api-item" href="#mvcmodelresultsetcomplex-unserialize">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">unserialize</span>( <span class="st">mixed</span> <span class="sv">$data</span> )</code>
<span class="desc">Unserializing a resultset will allow to only works on the rows present in the saved state</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$columnTypes</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$disableHydration</span><span class="sm"> = false</span></code>
<span class="desc">Unserialised result-set hydrated all rows already. unserialise() sets disableHydration to true</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$resultsetRowClass</span><span class="sm"> = &quot;&quot;</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 7</div>

<h4 id="mvcmodelresultsetcomplex-__construct"><code>__construct()</code></h4>

```php
public function __construct(
mixed $columnTypes,
ResultInterface|null $result = null,
mixed $cache = null,
string $resultsetRowClass = ""
);
```

Phalcon\Mvc\Model\Resultset\Complex constructor

<h4 id="mvcmodelresultsetcomplex-__serialize"><code>__serialize()</code></h4>

```php
public function __serialize(): array;
```

<h4 id="mvcmodelresultsetcomplex-__unserialize"><code>__unserialize()</code></h4>

```php
public function __unserialize( array $data ): void;
```

<h4 id="mvcmodelresultsetcomplex-current"><code>current()</code></h4>

```php
final public function current(): mixed;
```

Returns current row in the resultset

<h4 id="mvcmodelresultsetcomplex-serialize"><code>serialize()</code></h4>

```php
public function serialize(): string;
```

Serializing a resultset will dump all related rows into a big array,
serialize it and return the resulting string

<h4 id="mvcmodelresultsetcomplex-toarray"><code>toArray()</code></h4>

```php
public function toArray(): array;
```

Returns a complete resultset as an array, if the resultset has a big
number of rows it could consume more memory than currently it does.

<h4 id="mvcmodelresultsetcomplex-unserialize"><code>unserialize()</code></h4>

```php
public function unserialize( mixed $data ): void;
```

Unserializing a resultset will allow to only works on the rows present in the saved state

## Mvc\Model\Resultset\Simple

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Resultset/Simple.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Resultset\Simple

Simple resultsets only contains a complete objects
This class builds every complete object as it is required

@template TKey of int
@template TValue of \Phalcon\Mvc\ModelInterface

<div class="api-tree">

- [`Phalcon\Mvc\Model\Resultset`](#mvcmodelresultset)
- **`Phalcon\Mvc\Model\Resultset\Simple`**

</div>

__Uses__ `Phalcon\Di\Di` · `Phalcon\Di\DiInterface` · `Phalcon\Mvc\Model` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Eager\Loader` · `Phalcon\Mvc\Model\Exception` · `Phalcon\Mvc\Model\Exceptions\InvalidContainer` · `Phalcon\Mvc\Model\Exceptions\InvalidSerializationData` · `Phalcon\Mvc\Model\Exceptions\ResultsetColumnNotInMap` · `Phalcon\Mvc\Model\Resultset` · `Phalcon\Mvc\Model\Row` · `Phalcon\Storage\Serializer\SerializerInterface` · `Phalcon\Support\Settings`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelresultsetsimple-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$columnMap</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$result</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$cache</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$keepSnapshots</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Resultset\Simple constructor</span>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-__serialize">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">__serialize</span>()</code>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-__unserialize">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">__unserialize</span>( <span class="st">array</span> <span class="sv">$data</span> )</code>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-current">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|Row|null</code>
<code class="sig"><span class="sf">current</span>()</code>
<span class="desc">Returns current row in the resultset</span>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-serialize">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">serialize</span>()</code>
<span class="desc">Serializing a resultset will dump all related rows into a big array</span>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-seteagermap">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEagerMap</span>( <span class="st">array</span> <span class="sv">$eagerMap</span> )</code>
<span class="desc">Attaches a pre-loaded relation map, applied to every record as it is</span>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-slicerows">
<code class="vis vis-public">public</code>
<code class="ret">Simple</code>
<code class="sig"><span class="sf">sliceRows</span>( <span class="st">array</span> <span class="sv">$indexes</span> )</code>
<span class="desc">Builds a new resultset of the same concrete class over the rows at the</span>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-toarray">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">toArray</span>( <span class="st">bool</span> <span class="sv">$renameColumns</span><span class="sm"> = true</span> )</code>
<span class="desc">Returns a complete resultset as an array, if the resultset has a big</span>
</a>
<a class="api-item" href="#mvcmodelresultsetsimple-unserialize">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">unserialize</span>( <span class="st">mixed</span> <span class="sv">$data</span> )</code>
<span class="desc">Unserializing a resultset will allow to only works on the rows present in</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sv">$columnMap</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sv">$eagerMap</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$keepSnapshots</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface|Row</code>
<code class="sig"><span class="sv">$model</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 9</div>

<h4 id="mvcmodelresultsetsimple-__construct"><code>__construct()</code></h4>

```php
public function __construct(
mixed $columnMap,
mixed $model,
mixed $result,
mixed $cache = null,
bool $keepSnapshots = false
);
```

Phalcon\Mvc\Model\Resultset\Simple constructor

<h4 id="mvcmodelresultsetsimple-__serialize"><code>__serialize()</code></h4>

```php
public function __serialize(): array;
```

<h4 id="mvcmodelresultsetsimple-__unserialize"><code>__unserialize()</code></h4>

```php
public function __unserialize( array $data ): void;
```

<h4 id="mvcmodelresultsetsimple-current"><code>current()</code></h4>

```php
final public function current(): ModelInterface|Row|null;
```

Returns current row in the resultset

<h4 id="mvcmodelresultsetsimple-serialize"><code>serialize()</code></h4>

```php
public function serialize(): string;
```

Serializing a resultset will dump all related rows into a big array

<h4 id="mvcmodelresultsetsimple-seteagermap"><code>setEagerMap()</code></h4>

```php
public function setEagerMap( array $eagerMap ): void;
```

Attaches a pre-loaded relation map, applied to every record as it is
hydrated.

Records in a resultset are transient - seek() clears activeRow on every
move and current() re-hydrates from the raw row - so hydration is the
only durable point at which relations can be stamped.

<h4 id="mvcmodelresultsetsimple-slicerows"><code>sliceRows()</code></h4>

```php
public function sliceRows( array $indexes ): Simple;
```

Builds a new resultset of the same concrete class over the rows at the
given positions, preserving the column map, record prototype and
snapshot behavior of this resultset.

<h4 id="mvcmodelresultsetsimple-toarray"><code>toArray()</code></h4>

```php
public function toArray( bool $renameColumns = true ): array;
```

Returns a complete resultset as an array, if the resultset has a big
number of rows it could consume more memory than currently it does.
Export the resultset to an array couldn't be faster with a large number
of records

<h4 id="mvcmodelresultsetsimple-unserialize"><code>unserialize()</code></h4>

```php
public function unserialize( mixed $data ): void;
```

Unserializing a resultset will allow to only works on the rows present in
the saved state

## Mvc\Model\Row

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Row.zep">Source on GitHub</a>

This component allows Phalcon\Mvc\Model to return rows without an associated entity.
This objects implements the ArrayAccess interface to allow access the object as object->x or array[x].

<div class="api-tree">

- `\stdClass`
- **`Phalcon\Mvc\Model\Row`** - implements [`Phalcon\Mvc\EntityInterface`](#mvcentityinterface), [`Phalcon\Mvc\Model\ResultInterface`](#mvcmodelresultinterface), `\ArrayAccess`, `\JsonSerializable`

</div>

__Uses__ `ArrayAccess` · `JsonSerializable` · `Phalcon\Mvc\EntityInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Exceptions\IndexNotInRow` · `Phalcon\Mvc\Model\Exceptions\RowIsImmutable`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelrow-jsonserialize">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">jsonSerialize</span>()</code>
<span class="desc">Serializes the object for json_encode</span>
</a>
<a class="api-item" href="#mvcmodelrow-offsetexists">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">offsetExists</span>( <span class="st">mixed</span> <span class="sv">$index</span> )</code>
<span class="desc">Checks whether offset exists in the row. Returns true when the property</span>
</a>
<a class="api-item" href="#mvcmodelrow-offsetget">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">offsetGet</span>( <span class="st">mixed</span> <span class="sv">$index</span> )</code>
<span class="desc">Gets a record in a specific position of the row</span>
</a>
<a class="api-item" href="#mvcmodelrow-offsetset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">offsetSet</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$offset</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Rows cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface</span>
</a>
<a class="api-item" href="#mvcmodelrow-offsetunset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">offsetUnset</span>( <span class="st">mixed</span> <span class="sv">$offset</span> )</code>
<span class="desc">Rows cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface</span>
</a>
<a class="api-item" href="#mvcmodelrow-readattribute">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">readAttribute</span>( <span class="st">string</span> <span class="sv">$attribute</span> )</code>
<span class="desc">Reads an attribute value by its name</span>
</a>
<a class="api-item" href="#mvcmodelrow-setdirtystate">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|bool</code>
<code class="sig"><span class="sf">setDirtyState</span>( <span class="st">int</span> <span class="sv">$dirtyState</span> )</code>
<span class="desc">Set the current object&#039;s state</span>
</a>
<a class="api-item" href="#mvcmodelrow-toarray">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">toArray</span>()</code>
<span class="desc">Returns the instance as an array representation</span>
</a>
<a class="api-item" href="#mvcmodelrow-writeattribute">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">writeAttribute</span>(<span class="prm"><span class="st">string</span> <span class="sv">$attribute</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Writes an attribute value by its name</span>
</a>
</div>

### Methods

<div class="api-group">Public · 9</div>

<h4 id="mvcmodelrow-jsonserialize"><code>jsonSerialize()</code></h4>

```php
public function jsonSerialize(): array;
```

Serializes the object for json_encode

<h4 id="mvcmodelrow-offsetexists"><code>offsetExists()</code></h4>

```php
public function offsetExists( mixed $index ): bool;
```

Checks whether offset exists in the row. Returns true when the property
is present on the row, regardless of whether its value is null - column
presence is the contract, not value truthiness.

<h4 id="mvcmodelrow-offsetget"><code>offsetGet()</code></h4>

```php
public function offsetGet( mixed $index ): mixed;
```

Gets a record in a specific position of the row

<h4 id="mvcmodelrow-offsetset"><code>offsetSet()</code></h4>

```php
public function offsetSet(
mixed $offset,
mixed $value
): void;
```

Rows cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface

<h4 id="mvcmodelrow-offsetunset"><code>offsetUnset()</code></h4>

```php
public function offsetUnset( mixed $offset ): void;
```

Rows cannot be changed. It has only been implemented to meet the definition of the ArrayAccess interface

<h4 id="mvcmodelrow-readattribute"><code>readAttribute()</code></h4>

```php
public function readAttribute( string $attribute );
```

Reads an attribute value by its name

```php
echo $invoice->readAttribute("inv_title");
```

<h4 id="mvcmodelrow-setdirtystate"><code>setDirtyState()</code></h4>

```php
public function setDirtyState( int $dirtyState ): ModelInterface|bool;
```

Set the current object's state

<h4 id="mvcmodelrow-toarray"><code>toArray()</code></h4>

```php
public function toArray(): array;
```

Returns the instance as an array representation

<h4 id="mvcmodelrow-writeattribute"><code>writeAttribute()</code></h4>

```php
public function writeAttribute(
string $attribute,
mixed $value
): void;
```

Writes an attribute value by its name

```php
$invoice->writeAttribute("inv_title", "Test Invoice");
```

## Mvc\Model\Transaction

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Transaction.zep">Source on GitHub</a>

Transactions are protective blocks where SQL statements are only permanent if
they can all succeed as one atomic action. Phalcon\Transaction is intended to
be used with Phalcon_Model_Base. Phalcon Transactions should be created using
Phalcon\Transaction\Manager.

```php
use Phalcon\Mvc\Model\Transaction\Failed;
use Phalcon\Mvc\Model\Transaction\Manager;

try {
$manager = new Manager();

$transaction = $manager->get();

$invoice = new Invoices();

$invoice->setTransaction($transaction);

$invoice->inv_title    = "Test Invoice";
$invoice->inv_created_at = date("Y-m-d");

if ($invoice->save() === false) {
    $transaction->rollback("Can't save invoice");
}

$product = new Products();

$product->setTransaction($transaction);

$product->prd_name = "Widget";

if ($product->save() === false) {
    $transaction->rollback("Can't save product");
}

$transaction->commit();
} catch(Failed $e) {
echo "Failed, reason: ", $e->getMessage();
}
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Transaction`** - implements [`Phalcon\Mvc\Model\TransactionInterface`](#mvcmodeltransactioninterface)

</div>

__Uses__ `Phalcon\Db\Adapter\AdapterInterface` · `Phalcon\Di\DiInterface` · `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\TransactionInterface` · `Phalcon\Mvc\Model\Transaction\Failed` · `Phalcon\Mvc\Model\Transaction\ManagerInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodeltransaction-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">DiInterface</span> <span class="sv">$container</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$autoBegin</span><span class="sm"> = false</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$service</span><span class="sm"> = &quot;db&quot;</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Transaction constructor</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-begin">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">begin</span>()</code>
<span class="desc">Starts the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-commit">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">commit</span>()</code>
<span class="desc">Commits the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-getconnection">
<code class="vis vis-public">public</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sf">getConnection</span>()</code>
<span class="desc">Returns the connection related to transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns validations messages from last save try</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-ismanaged">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isManaged</span>()</code>
<span class="desc">Checks whether transaction is managed by a transaction manager</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-isvalid">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isValid</span>()</code>
<span class="desc">Checks whether internal connection is under an active transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-rollback">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">rollback</span>(<span class="prm"><span class="st">string|null</span> <span class="sv">$rollbackMessage</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">ModelInterface|null</span> <span class="sv">$rollbackRecord</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Rollbacks the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-setisnewtransaction">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setIsNewTransaction</span>( <span class="st">bool</span> <span class="sv">$isNew</span> )</code>
<span class="desc">Sets if is a reused transaction or new once</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-setrollbackonabort">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setRollbackOnAbort</span>( <span class="st">bool</span> <span class="sv">$rollbackOnAbort</span> )</code>
<span class="desc">Sets flag to rollback on abort the HTTP connection</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-setrollbackedrecord">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setRollbackedRecord</span>( <span class="st">ModelInterface</span> <span class="sv">$record</span> )</code>
<span class="desc">Sets object which generates rollback action</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-settransactionmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setTransactionManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$manager</span> )</code>
<span class="desc">Sets transaction manager related to the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransaction-throwrollbackexception">
<code class="vis vis-public">public</code>
<code class="ret">TransactionInterface</code>
<code class="sig"><span class="sf">throwRollbackException</span>( <span class="st">bool</span> <span class="sv">$status</span> )</code>
<span class="desc">Enables throwing exception</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$activeTransaction</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">AdapterInterface</code>
<code class="sig"><span class="sv">$connection</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$isNewTransaction</span><span class="sm"> = true</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$manager</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$messages</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$rollbackOnAbort</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sv">$rollbackRecord</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$rollbackThrowException</span><span class="sm"> = false</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 13</div>

<h4 id="mvcmodeltransaction-__construct"><code>__construct()</code></h4>

```php
public function __construct(
DiInterface $container,
bool $autoBegin = false,
string $service = "db"
);
```

Phalcon\Mvc\Model\Transaction constructor

<h4 id="mvcmodeltransaction-begin"><code>begin()</code></h4>

```php
public function begin(): bool;
```

Starts the transaction

<h4 id="mvcmodeltransaction-commit"><code>commit()</code></h4>

```php
public function commit(): bool;
```

Commits the transaction

<h4 id="mvcmodeltransaction-getconnection"><code>getConnection()</code></h4>

```php
public function getConnection(): AdapterInterface;
```

Returns the connection related to transaction

<h4 id="mvcmodeltransaction-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): array;
```

Returns validations messages from last save try

<h4 id="mvcmodeltransaction-ismanaged"><code>isManaged()</code></h4>

```php
public function isManaged(): bool;
```

Checks whether transaction is managed by a transaction manager

<h4 id="mvcmodeltransaction-isvalid"><code>isValid()</code></h4>

```php
public function isValid(): bool;
```

Checks whether internal connection is under an active transaction

<h4 id="mvcmodeltransaction-rollback"><code>rollback()</code></h4>

```php
public function rollback(
string|null $rollbackMessage = null,
ModelInterface|null $rollbackRecord = null
): bool;
```

Rollbacks the transaction

<h4 id="mvcmodeltransaction-setisnewtransaction"><code>setIsNewTransaction()</code></h4>

```php
public function setIsNewTransaction( bool $isNew ): void;
```

Sets if is a reused transaction or new once

<h4 id="mvcmodeltransaction-setrollbackonabort"><code>setRollbackOnAbort()</code></h4>

```php
public function setRollbackOnAbort( bool $rollbackOnAbort ): void;
```

Sets flag to rollback on abort the HTTP connection

<h4 id="mvcmodeltransaction-setrollbackedrecord"><code>setRollbackedRecord()</code></h4>

```php
public function setRollbackedRecord( ModelInterface $record ): void;
```

Sets object which generates rollback action

<h4 id="mvcmodeltransaction-settransactionmanager"><code>setTransactionManager()</code></h4>

```php
public function setTransactionManager( ManagerInterface $manager ): void;
```

Sets transaction manager related to the transaction

<h4 id="mvcmodeltransaction-throwrollbackexception"><code>throwRollbackException()</code></h4>

```php
public function throwRollbackException( bool $status ): TransactionInterface;
```

Enables throwing exception

## Mvc\Model\TransactionInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/TransactionInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\Model\Transaction

<div class="api-tree">

- **`Phalcon\Mvc\Model\TransactionInterface`**

</div>

__Uses__ `Phalcon\Mvc\ModelInterface` · `Phalcon\Mvc\Model\Transaction\ManagerInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodeltransactioninterface-begin">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">begin</span>()</code>
<span class="desc">Starts the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-commit">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">commit</span>()</code>
<span class="desc">Commits the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-getconnection">
<code class="vis vis-public">public</code>
<code class="ret">\Phalcon\Db\Adapter\AdapterInterface</code>
<code class="sig"><span class="sf">getConnection</span>()</code>
<span class="desc">Returns connection related to transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns validations messages from last save try</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-ismanaged">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isManaged</span>()</code>
<span class="desc">Checks whether transaction is managed by a transaction manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-isvalid">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isValid</span>()</code>
<span class="desc">Checks whether internal connection is under an active transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-rollback">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">rollback</span>(<span class="prm"><span class="st">string|null</span> <span class="sv">$rollbackMessage</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">ModelInterface|null</span> <span class="sv">$rollbackRecord</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Rollbacks the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-setisnewtransaction">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setIsNewTransaction</span>( <span class="st">bool</span> <span class="sv">$isNew</span> )</code>
<span class="desc">Sets if is a reused transaction or new once</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-setrollbackonabort">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setRollbackOnAbort</span>( <span class="st">bool</span> <span class="sv">$rollbackOnAbort</span> )</code>
<span class="desc">Sets flag to rollback on abort the HTTP connection</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-setrollbackedrecord">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setRollbackedRecord</span>( <span class="st">ModelInterface</span> <span class="sv">$record</span> )</code>
<span class="desc">Sets object which generates rollback action</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-settransactionmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setTransactionManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$manager</span> )</code>
<span class="desc">Sets transaction manager related to the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactioninterface-throwrollbackexception">
<code class="vis vis-public">public</code>
<code class="ret">TransactionInterface</code>
<code class="sig"><span class="sf">throwRollbackException</span>( <span class="st">bool</span> <span class="sv">$status</span> )</code>
<span class="desc">Enables throwing exception</span>
</a>
</div>

### Methods

<div class="api-group">Public · 12</div>

<h4 id="mvcmodeltransactioninterface-begin"><code>begin()</code></h4>

```php
public function begin(): bool;
```

Starts the transaction

<h4 id="mvcmodeltransactioninterface-commit"><code>commit()</code></h4>

```php
public function commit(): bool;
```

Commits the transaction

<h4 id="mvcmodeltransactioninterface-getconnection"><code>getConnection()</code></h4>

```php
public function getConnection(): \Phalcon\Db\Adapter\AdapterInterface;
```

Returns connection related to transaction

<h4 id="mvcmodeltransactioninterface-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): array;
```

Returns validations messages from last save try

<h4 id="mvcmodeltransactioninterface-ismanaged"><code>isManaged()</code></h4>

```php
public function isManaged(): bool;
```

Checks whether transaction is managed by a transaction manager

<h4 id="mvcmodeltransactioninterface-isvalid"><code>isValid()</code></h4>

```php
public function isValid(): bool;
```

Checks whether internal connection is under an active transaction

<h4 id="mvcmodeltransactioninterface-rollback"><code>rollback()</code></h4>

```php
public function rollback(
string|null $rollbackMessage = null,
ModelInterface|null $rollbackRecord = null
): bool;
```

Rollbacks the transaction

<h4 id="mvcmodeltransactioninterface-setisnewtransaction"><code>setIsNewTransaction()</code></h4>

```php
public function setIsNewTransaction( bool $isNew ): void;
```

Sets if is a reused transaction or new once

<h4 id="mvcmodeltransactioninterface-setrollbackonabort"><code>setRollbackOnAbort()</code></h4>

```php
public function setRollbackOnAbort( bool $rollbackOnAbort ): void;
```

Sets flag to rollback on abort the HTTP connection

<h4 id="mvcmodeltransactioninterface-setrollbackedrecord"><code>setRollbackedRecord()</code></h4>

```php
public function setRollbackedRecord( ModelInterface $record ): void;
```

Sets object which generates rollback action

<h4 id="mvcmodeltransactioninterface-settransactionmanager"><code>setTransactionManager()</code></h4>

```php
public function setTransactionManager( ManagerInterface $manager ): void;
```

Sets transaction manager related to the transaction

<h4 id="mvcmodeltransactioninterface-throwrollbackexception"><code>throwRollbackException()</code></h4>

```php
public function throwRollbackException( bool $status ): TransactionInterface;
```

Enables throwing exception

## Mvc\Model\Transaction\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Transaction/Exception.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Transaction\Exception

Exceptions thrown in Phalcon\Mvc\Model\Transaction will use this class

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\Transaction\Exception`**
- [`Phalcon\Mvc\Model\Transaction\Failed`](#mvcmodeltransactionfailed)

</div>

## Mvc\Model\Transaction\Failed

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Transaction/Failed.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Transaction\Failed

This class will be thrown to exit a try/catch block for isolated transactions

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- [`Phalcon\Mvc\Model\Transaction\Exception`](#mvcmodeltransactionexception)
- **`Phalcon\Mvc\Model\Transaction\Failed`**

</div>

__Uses__ `Phalcon\Messages\MessageInterface` · `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodeltransactionfailed-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$message</span>,</span><span class="prm"><span class="st">ModelInterface|null</span> <span class="sv">$record</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\Transaction\Failed constructor</span>
</a>
<a class="api-item" href="#mvcmodeltransactionfailed-getrecord">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sf">getRecord</span>()</code>
<span class="desc">Returns validation record messages which stop the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionfailed-getrecordmessages">
<code class="vis vis-public">public</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sf">getRecordMessages</span>()</code>
<span class="desc">Returns validation record messages which stop the transaction</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface|null</code>
<code class="sig"><span class="sv">$record</span><span class="sm"> = null</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="mvcmodeltransactionfailed-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $message,
ModelInterface|null $record = null
);
```

Phalcon\Mvc\Model\Transaction\Failed constructor

<h4 id="mvcmodeltransactionfailed-getrecord"><code>getRecord()</code></h4>

```php
public function getRecord(): ModelInterface|null;
```

Returns validation record messages which stop the transaction

<h4 id="mvcmodeltransactionfailed-getrecordmessages"><code>getRecordMessages()</code></h4>

```php
public function getRecordMessages(): array|string;
```

Returns validation record messages which stop the transaction

## Mvc\Model\Transaction\Manager

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Transaction/Manager.zep">Source on GitHub</a>

A transaction acts on a single database connection. If you have multiple
class-specific databases, the transaction will not protect interaction among
them.

This class manages the objects that compose a transaction.
A transaction produces a unique connection that is passed to every object
part of the transaction.

```php
use Phalcon\Mvc\Model\Transaction\Failed;
use Phalcon\Mvc\Model\Transaction\Manager;

try {
   $transactionManager = new Manager();

   $transaction = $transactionManager->get();

   $invoice = new Invoices();

   $invoice->setTransaction($transaction);

   $invoice->inv_title       = "Test Invoice";
   $invoice->inv_created_at = date("Y-m-d");

   if ($invoice->save() === false) {
   $transaction->rollback("Can't save invoice");
   }

   $product = new Products();

   $product->setTransaction($transaction);

   $product->prd_name = "Widget";

   if ($product->save() === false) {
   $transaction->rollback("Can't save product");
   }

   $transaction->commit();
} catch (Failed $e) {
   echo "Failed, reason: ", $e->getMessage();
}
```

<div class="api-tree">

- **`Phalcon\Mvc\Model\Transaction\Manager`** - implements [`Phalcon\Mvc\Model\Transaction\ManagerInterface`](#mvcmodeltransactionmanagerinterface), [`Phalcon\Di\InjectionAwareInterface`](/5.19/api/phalcon_di/#diinjectionawareinterface)

</div>

__Uses__ `Phalcon\Di\Di` · `Phalcon\Di\DiInterface` · `Phalcon\Di\InjectionAwareInterface` · `Phalcon\Mvc\Model\Exceptions\ManagerOrmServicesUnavailable` · `Phalcon\Mvc\Model\Transaction` · `Phalcon\Mvc\Model\TransactionInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodeltransactionmanager-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span> )</code>
<span class="desc">Phalcon\Mvc\Model\Transaction\Manager constructor</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-collecttransactions">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">collectTransactions</span>()</code>
<span class="desc">Remove all the transactions from the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-commit">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">commit</span>()</code>
<span class="desc">Commits active transactions within the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-get">
<code class="vis vis-public">public</code>
<code class="ret">TransactionInterface</code>
<code class="sig"><span class="sf">get</span>( <span class="st">bool</span> <span class="sv">$autoBegin</span><span class="sm"> = true</span> )</code>
<span class="desc">Returns a new \Phalcon\Mvc\Model\Transaction or an already created once</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-getdi">
<code class="vis vis-public">public</code>
<code class="ret">DiInterface</code>
<code class="sig"><span class="sf">getDI</span>()</code>
<span class="desc">Returns the dependency injection container</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-getdbservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getDbService</span>()</code>
<span class="desc">Returns the database service used to isolate the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-getorcreatetransaction">
<code class="vis vis-public">public</code>
<code class="ret">TransactionInterface</code>
<code class="sig"><span class="sf">getOrCreateTransaction</span>( <span class="st">bool</span> <span class="sv">$autoBegin</span><span class="sm"> = true</span> )</code>
<span class="desc">Create/Returns a new transaction or an existing one</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-getrollbackpendent">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">getRollbackPendent</span>()</code>
<span class="desc">Check if the transaction manager is registering a shutdown function to</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-has">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">has</span>()</code>
<span class="desc">Checks whether the manager has an active transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-notifycommit">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">notifyCommit</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">Notifies the manager about a committed transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-notifyrollback">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">notifyRollback</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">Notifies the manager about a rollbacked transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-rollback">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">rollback</span>( <span class="st">bool</span> <span class="sv">$collect</span><span class="sm"> = true</span> )</code>
<span class="desc">Rollbacks active transactions within the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-rollbackpendent">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">rollbackPendent</span>()</code>
<span class="desc">Rollbacks active transactions within the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the dependency injection container</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-setdbservice">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface</code>
<code class="sig"><span class="sf">setDbService</span>( <span class="st">string</span> <span class="sv">$service</span> )</code>
<span class="desc">Sets the database service used to run the isolated transactions</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-setrollbackpendent">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface</code>
<code class="sig"><span class="sf">setRollbackPendent</span>( <span class="st">bool</span> <span class="sv">$rollbackPendent</span> )</code>
<span class="desc">Set if the transaction manager must register a shutdown function to clean</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanager-collecttransaction">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">collectTransaction</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">Removes transactions from the TransactionManager</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">DiInterface|null</code>
<code class="sig"><span class="sv">$container</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$initialized</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$number</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$rollbackPendent</span><span class="sm"> = true</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$service</span><span class="sm"> = &quot;db&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$transactions</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 16</div>

<h4 id="mvcmodeltransactionmanager-__construct"><code>__construct()</code></h4>

```php
public function __construct( DiInterface|null $container = null );
```

Phalcon\Mvc\Model\Transaction\Manager constructor

<h4 id="mvcmodeltransactionmanager-collecttransactions"><code>collectTransactions()</code></h4>

```php
public function collectTransactions(): void;
```

Remove all the transactions from the manager

<h4 id="mvcmodeltransactionmanager-commit"><code>commit()</code></h4>

```php
public function commit();
```

Commits active transactions within the manager

<h4 id="mvcmodeltransactionmanager-get"><code>get()</code></h4>

```php
public function get( bool $autoBegin = true ): TransactionInterface;
```

Returns a new \Phalcon\Mvc\Model\Transaction or an already created once
This method registers a shutdown function to rollback active connections

<h4 id="mvcmodeltransactionmanager-getdi"><code>getDI()</code></h4>

```php
public function getDI(): DiInterface;
```

Returns the dependency injection container

<h4 id="mvcmodeltransactionmanager-getdbservice"><code>getDbService()</code></h4>

```php
public function getDbService(): string;
```

Returns the database service used to isolate the transaction

<h4 id="mvcmodeltransactionmanager-getorcreatetransaction"><code>getOrCreateTransaction()</code></h4>

```php
public function getOrCreateTransaction( bool $autoBegin = true ): TransactionInterface;
```

Create/Returns a new transaction or an existing one

<h4 id="mvcmodeltransactionmanager-getrollbackpendent"><code>getRollbackPendent()</code></h4>

```php
public function getRollbackPendent(): bool;
```

Check if the transaction manager is registering a shutdown function to
clean up pendent transactions

<h4 id="mvcmodeltransactionmanager-has"><code>has()</code></h4>

```php
public function has(): bool;
```

Checks whether the manager has an active transaction

<h4 id="mvcmodeltransactionmanager-notifycommit"><code>notifyCommit()</code></h4>

```php
public function notifyCommit( TransactionInterface $transaction ): void;
```

Notifies the manager about a committed transaction

<h4 id="mvcmodeltransactionmanager-notifyrollback"><code>notifyRollback()</code></h4>

```php
public function notifyRollback( TransactionInterface $transaction ): void;
```

Notifies the manager about a rollbacked transaction

<h4 id="mvcmodeltransactionmanager-rollback"><code>rollback()</code></h4>

```php
public function rollback( bool $collect = true ): void;
```

Rollbacks active transactions within the manager
Collect will remove the transaction from the manager

<h4 id="mvcmodeltransactionmanager-rollbackpendent"><code>rollbackPendent()</code></h4>

```php
public function rollbackPendent(): void;
```

Rollbacks active transactions within the manager

<h4 id="mvcmodeltransactionmanager-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the dependency injection container

<h4 id="mvcmodeltransactionmanager-setdbservice"><code>setDbService()</code></h4>

```php
public function setDbService( string $service ): ManagerInterface;
```

Sets the database service used to run the isolated transactions

<h4 id="mvcmodeltransactionmanager-setrollbackpendent"><code>setRollbackPendent()</code></h4>

```php
public function setRollbackPendent( bool $rollbackPendent ): ManagerInterface;
```

Set if the transaction manager must register a shutdown function to clean
up pendent transactions

<div class="api-group">Protected · 1</div>

<h4 id="mvcmodeltransactionmanager-collecttransaction"><code>collectTransaction()</code></h4>

```php
protected function collectTransaction( TransactionInterface $transaction ): void;
```

Removes transactions from the TransactionManager

## Mvc\Model\Transaction\ManagerInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/Transaction/ManagerInterface.zep">Source on GitHub</a>

Phalcon\Mvc\Model\Transaction\ManagerInterface

Interface for Phalcon\Mvc\Model\Transaction\Manager

<div class="api-tree">

- **`Phalcon\Mvc\Model\Transaction\ManagerInterface`**

</div>

__Uses__ `Phalcon\Mvc\Model\TransactionInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-collecttransactions">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">collectTransactions</span>()</code>
<span class="desc">Remove all the transactions from the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-commit">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">commit</span>()</code>
<span class="desc">Commits active transactions within the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-get">
<code class="vis vis-public">public</code>
<code class="ret">TransactionInterface</code>
<code class="sig"><span class="sf">get</span>( <span class="st">bool</span> <span class="sv">$autoBegin</span><span class="sm"> = true</span> )</code>
<span class="desc">Returns a new \Phalcon\Mvc\Model\Transaction or an already created once</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-getdbservice">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getDbService</span>()</code>
<span class="desc">Returns the database service used to isolate the transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-getrollbackpendent">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">getRollbackPendent</span>()</code>
<span class="desc">Check if the transaction manager is registering a shutdown function to clean up pendent transactions</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-has">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">has</span>()</code>
<span class="desc">Checks whether manager has an active transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-notifycommit">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">notifyCommit</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">Notifies the manager about a committed transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-notifyrollback">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">notifyRollback</span>( <span class="st">TransactionInterface</span> <span class="sv">$transaction</span> )</code>
<span class="desc">Notifies the manager about a rollbacked transaction</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-rollback">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">rollback</span>( <span class="st">bool</span> <span class="sv">$collect</span><span class="sm"> = false</span> )</code>
<span class="desc">Rollbacks active transactions within the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-rollbackpendent">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">rollbackPendent</span>()</code>
<span class="desc">Rollbacks active transactions within the manager</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-setdbservice">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface</code>
<code class="sig"><span class="sf">setDbService</span>( <span class="st">string</span> <span class="sv">$service</span> )</code>
<span class="desc">Sets the database service used to run the isolated transactions</span>
</a>
<a class="api-item" href="#mvcmodeltransactionmanagerinterface-setrollbackpendent">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface</code>
<code class="sig"><span class="sf">setRollbackPendent</span>( <span class="st">bool</span> <span class="sv">$rollbackPendent</span> )</code>
<span class="desc">Set if the transaction manager must register a shutdown function to clean up pendent transactions</span>
</a>
</div>

### Methods

<div class="api-group">Public · 12</div>

<h4 id="mvcmodeltransactionmanagerinterface-collecttransactions"><code>collectTransactions()</code></h4>

```php
public function collectTransactions(): void;
```

Remove all the transactions from the manager

<h4 id="mvcmodeltransactionmanagerinterface-commit"><code>commit()</code></h4>

```php
public function commit();
```

Commits active transactions within the manager

<h4 id="mvcmodeltransactionmanagerinterface-get"><code>get()</code></h4>

```php
public function get( bool $autoBegin = true ): TransactionInterface;
```

Returns a new \Phalcon\Mvc\Model\Transaction or an already created once

<h4 id="mvcmodeltransactionmanagerinterface-getdbservice"><code>getDbService()</code></h4>

```php
public function getDbService(): string;
```

Returns the database service used to isolate the transaction

<h4 id="mvcmodeltransactionmanagerinterface-getrollbackpendent"><code>getRollbackPendent()</code></h4>

```php
public function getRollbackPendent(): bool;
```

Check if the transaction manager is registering a shutdown function to clean up pendent transactions

<h4 id="mvcmodeltransactionmanagerinterface-has"><code>has()</code></h4>

```php
public function has(): bool;
```

Checks whether manager has an active transaction

<h4 id="mvcmodeltransactionmanagerinterface-notifycommit"><code>notifyCommit()</code></h4>

```php
public function notifyCommit( TransactionInterface $transaction ): void;
```

Notifies the manager about a committed transaction

<h4 id="mvcmodeltransactionmanagerinterface-notifyrollback"><code>notifyRollback()</code></h4>

```php
public function notifyRollback( TransactionInterface $transaction ): void;
```

Notifies the manager about a rollbacked transaction

<h4 id="mvcmodeltransactionmanagerinterface-rollback"><code>rollback()</code></h4>

```php
public function rollback( bool $collect = false ): void;
```

Rollbacks active transactions within the manager
Collect will remove transaction from the manager

<h4 id="mvcmodeltransactionmanagerinterface-rollbackpendent"><code>rollbackPendent()</code></h4>

```php
public function rollbackPendent(): void;
```

Rollbacks active transactions within the manager

<h4 id="mvcmodeltransactionmanagerinterface-setdbservice"><code>setDbService()</code></h4>

```php
public function setDbService( string $service ): ManagerInterface;
```

Sets the database service used to run the isolated transactions

<h4 id="mvcmodeltransactionmanagerinterface-setrollbackpendent"><code>setRollbackPendent()</code></h4>

```php
public function setRollbackPendent( bool $rollbackPendent ): ManagerInterface;
```

Set if the transaction manager must register a shutdown function to clean up pendent transactions

## Mvc\Model\ValidationFailed

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Model/ValidationFailed.zep">Source on GitHub</a>

Phalcon\Mvc\Model\ValidationFailed

This exception is generated when a model fails to save a record
Phalcon\Mvc\Model must be set up to have this behavior

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Model\Exception`](#mvcmodelexception)
- **`Phalcon\Mvc\Model\ValidationFailed`**

</div>

__Uses__ `Phalcon\Messages\Message` · `Phalcon\Mvc\ModelInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmodelvalidationfailed-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">ModelInterface</span> <span class="sv">$model</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$validationMessages</span></span>)</code>
<span class="desc">Phalcon\Mvc\Model\ValidationFailed constructor</span>
</a>
<a class="api-item" href="#mvcmodelvalidationfailed-getmessages">
<code class="vis vis-public">public</code>
<code class="ret">Message[]</code>
<code class="sig"><span class="sf">getMessages</span>()</code>
<span class="desc">Returns the complete group of messages produced in the validation</span>
</a>
<a class="api-item" href="#mvcmodelvalidationfailed-getmodel">
<code class="vis vis-public">public</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sf">getModel</span>()</code>
<span class="desc">Returns the model that generated the messages</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ModelInterface</code>
<code class="sig"><span class="sv">$model</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$validationMessages</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="mvcmodelvalidationfailed-__construct"><code>__construct()</code></h4>

```php
public function __construct(
ModelInterface $model,
array $validationMessages
);
```

Phalcon\Mvc\Model\ValidationFailed constructor

<h4 id="mvcmodelvalidationfailed-getmessages"><code>getMessages()</code></h4>

```php
public function getMessages(): Message[];
```

Returns the complete group of messages produced in the validation

<h4 id="mvcmodelvalidationfailed-getmodel"><code>getModel()</code></h4>

```php
public function getModel(): ModelInterface;
```

Returns the model that generated the messages

## Mvc\ModuleDefinitionInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/ModuleDefinitionInterface.zep">Source on GitHub</a>

This interface must be implemented by class module definitions

<div class="api-tree">

- **`Phalcon\Mvc\ModuleDefinitionInterface`**

</div>

__Uses__ `Phalcon\Di\DiInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcmoduledefinitioninterface-registerautoloaders">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">registerAutoloaders</span>( <span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span> )</code>
<span class="desc">Registers an autoloader related to the module</span>
</a>
<a class="api-item" href="#mvcmoduledefinitioninterface-registerservices">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">registerServices</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Registers services related to the module</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcmoduledefinitioninterface-registerautoloaders"><code>registerAutoloaders()</code></h4>

```php
public function registerAutoloaders( DiInterface|null $container = null );
```

Registers an autoloader related to the module

<h4 id="mvcmoduledefinitioninterface-registerservices"><code>registerServices()</code></h4>

```php
public function registerServices( DiInterface $container );
```

Registers services related to the module

## Mvc\Router

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router.zep">Source on GitHub</a>

Phalcon\Mvc\Router

Phalcon\Mvc\Router is the standard framework router. Routing is the
process of taking a URI endpoint (that part of the URI which comes after the
base URL) and decomposing it into parameters to determine which module,
controller, and action of that controller should receive the request

```php
use Phalcon\Mvc\Router;

$router = new Router();

$router->add(
"/documentation/{chapter}/{name}\.{type:[a-z]+}",
[
    "controller" => "documentation",
    "action"     => "show",
]
);

$router->handle(
"/documentation/1/examples.html"
);

echo $router->getControllerName();
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\AbstractInjectionAware`](/5.19/api/phalcon_di/#diabstractinjectionaware)
- **`Phalcon\Mvc\Router`** - implements [`Phalcon\Mvc\RouterInterface`](#mvcrouterinterface), [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface)
- [`Phalcon\Mvc\Router\Annotations`](#mvcrouterannotations)

</div>

__Uses__ `Phalcon\Cache\Adapter\AdapterInterface` · `Phalcon\Config\ConfigInterface` · `Phalcon\Di\AbstractInjectionAware` · `Phalcon\Di\DiInterface` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Http\RequestInterface` · `Phalcon\Mvc\Router\Exception` · `Phalcon\Mvc\Router\Exceptions\BeforeMatchNotCallable` · `Phalcon\Mvc\Router\Exceptions\ConfigKeyMustBeArray` · `Phalcon\Mvc\Router\Exceptions\EmptyGroupOfRoutes` · `Phalcon\Mvc\Router\Exceptions\GroupRoutesMustBeArray` · `Phalcon\Mvc\Router\Exceptions\InvalidConfigSource` · `Phalcon\Mvc\Router\Exceptions\InvalidNotFoundPaths` · `Phalcon\Mvc\Router\Exceptions\InvalidRoutePosition` · `Phalcon\Mvc\Router\Exceptions\MissingGroupRouteKey` · `Phalcon\Mvc\Router\Exceptions\MissingRouteConfigKey` · `Phalcon\Mvc\Router\Exceptions\RequestServiceUnavailable` · `Phalcon\Mvc\Router\Exceptions\UnknownHttpMethod` · `Phalcon\Mvc\Router\Exceptions\WrongPathsKey` · `Phalcon\Mvc\Router\Group` · `Phalcon\Mvc\Router\GroupInterface` · `Phalcon\Mvc\Router\Route` · `Phalcon\Mvc\Router\RouteInterface` · `Phalcon\Traits\Php\FileTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouter-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">bool</span> <span class="sv">$defaultRoutes</span><span class="sm"> = true</span> )</code>
<span class="desc">Phalcon\Mvc\Router constructor</span>
</a>
<a class="api-item" href="#mvcrouter-add">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">add</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$httpMethods</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router without any HTTP constraint</span>
</a>
<a class="api-item" href="#mvcrouter-addconnect">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addConnect</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is CONNECT</span>
</a>
<a class="api-item" href="#mvcrouter-adddelete">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addDelete</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is DELETE</span>
</a>
<a class="api-item" href="#mvcrouter-addget">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addGet</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is GET</span>
</a>
<a class="api-item" href="#mvcrouter-addhead">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addHead</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is HEAD</span>
</a>
<a class="api-item" href="#mvcrouter-addoptions">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addOptions</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Add a route to the router that only match if the HTTP method is OPTIONS</span>
</a>
<a class="api-item" href="#mvcrouter-addpatch">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPatch</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PATCH</span>
</a>
<a class="api-item" href="#mvcrouter-addpost">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPost</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is POST</span>
</a>
<a class="api-item" href="#mvcrouter-addpurge">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPurge</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PURGE</span>
</a>
<a class="api-item" href="#mvcrouter-addput">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPut</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PUT</span>
</a>
<a class="api-item" href="#mvcrouter-addtrace">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addTrace</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is TRACE</span>
</a>
<a class="api-item" href="#mvcrouter-attach">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">attach</span>(<span class="prm"><span class="st">RouteInterface</span> <span class="sv">$route</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Attach Route object to the routes stack.</span>
</a>
<a class="api-item" href="#mvcrouter-builddispatcherdump">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">buildDispatcherDump</span>()</code>
<span class="desc">Produces a pure-data array describing every piece of state needed</span>
</a>
<a class="api-item" href="#mvcrouter-clear">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">clear</span>()</code>
<span class="desc">Removes all the pre-defined routes</span>
</a>
<a class="api-item" href="#mvcrouter-dumpdispatcher">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">dumpDispatcher</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
<span class="desc">File-shaped helper around buildDispatcherDump(). Writes the dump as</span>
</a>
<a class="api-item" href="#mvcrouter-getactionname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActionName</span>()</code>
<span class="desc">Returns the processed action name</span>
</a>
<a class="api-item" href="#mvcrouter-getcontrollername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getControllerName</span>()</code>
<span class="desc">Returns the processed controller name</span>
</a>
<a class="api-item" href="#mvcrouter-getdefaults">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getDefaults</span>()</code>
<span class="desc">Returns an array of default parameters</span>
</a>
<a class="api-item" href="#mvcrouter-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvcrouter-getkeyrouteids">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getKeyRouteIds</span>()</code>
</a>
<a class="api-item" href="#mvcrouter-getkeyroutenames">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getKeyRouteNames</span>()</code>
</a>
<a class="api-item" href="#mvcrouter-getmatchedroute">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface|null</code>
<code class="sig"><span class="sf">getMatchedRoute</span>()</code>
<span class="desc">Returns the route that matches the handled URI</span>
</a>
<a class="api-item" href="#mvcrouter-getmatches">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMatches</span>()</code>
<span class="desc">Returns the sub expressions in the regular expression matched</span>
</a>
<a class="api-item" href="#mvcrouter-getmethodroutes">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMethodRoutes</span>()</code>
<span class="desc">Returns the routes indexed by HTTP method.</span>
</a>
<a class="api-item" href="#mvcrouter-getmodulename">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModuleName</span>()</code>
<span class="desc">Returns the processed module name</span>
</a>
<a class="api-item" href="#mvcrouter-getnamespacename">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getNamespaceName</span>()</code>
<span class="desc">Returns the processed namespace name</span>
</a>
<a class="api-item" href="#mvcrouter-getparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getParams</span>()</code>
<span class="desc">Returns the processed parameters</span>
</a>
<a class="api-item" href="#mvcrouter-getrewriteuri">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getRewriteUri</span>()</code>
<span class="desc">Get rewrite info. This info is read from $_GET[&quot;_url&quot;].</span>
</a>
<a class="api-item" href="#mvcrouter-getroutebyid">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface|bool</code>
<code class="sig"><span class="sf">getRouteById</span>( <span class="st">mixed</span> <span class="sv">$routeId</span> )</code>
<span class="desc">Returns a route object by its id</span>
</a>
<a class="api-item" href="#mvcrouter-getroutebyname">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface|bool</code>
<code class="sig"><span class="sf">getRouteByName</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
<span class="desc">Returns a route object by its name</span>
</a>
<a class="api-item" href="#mvcrouter-getroutes">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface[]</code>
<code class="sig"><span class="sf">getRoutes</span>()</code>
<span class="desc">Returns all the routes defined in the router</span>
</a>
<a class="api-item" href="#mvcrouter-handle">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">handle</span>( <span class="st">string</span> <span class="sv">$uri</span> )</code>
<span class="desc">Handles routing information received from the rewrite engine</span>
</a>
<a class="api-item" href="#mvcrouter-isexactcontrollername">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isExactControllerName</span>()</code>
<span class="desc">Returns whether controller name should not be mangled</span>
</a>
<a class="api-item" href="#mvcrouter-loaddispatcher">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">loadDispatcher</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
<span class="desc">File-shaped helper around loadDispatcherFromArray(). Includes the</span>
</a>
<a class="api-item" href="#mvcrouter-loaddispatcherfromarray">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">loadDispatcherFromArray</span>( <span class="st">array</span> <span class="sv">$dump</span> )</code>
<span class="desc">Inverse of buildDispatcherDump(). Reconstructs every Route from the</span>
</a>
<a class="api-item" href="#mvcrouter-loadfromconfig">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">loadFromConfig</span>( <span class="st">mixed</span> <span class="sv">$config</span> )</code>
<span class="desc">Loads routes from an array or Phalcon\Config\Config instance.</span>
</a>
<a class="api-item" href="#mvcrouter-mount">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">mount</span>( <span class="st">GroupInterface</span> <span class="sv">$group</span> )</code>
<span class="desc">Mounts a group of routes in the router</span>
</a>
<a class="api-item" href="#mvcrouter-notfound">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">notFound</span>( <span class="st">mixed</span> <span class="sv">$paths</span> )</code>
<span class="desc">Set a group of paths to be returned when none of the defined routes are</span>
</a>
<a class="api-item" href="#mvcrouter-removeextraslashes">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">removeExtraSlashes</span>( <span class="st">bool</span> <span class="sv">$remove</span> )</code>
<span class="desc">Set whether router must remove the extra slashes in the handled routes</span>
</a>
<a class="api-item" href="#mvcrouter-setdefaultaction">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setDefaultAction</span>( <span class="st">string</span> <span class="sv">$actionName</span> )</code>
<span class="desc">Sets the default action name</span>
</a>
<a class="api-item" href="#mvcrouter-setdefaultcontroller">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setDefaultController</span>( <span class="st">string</span> <span class="sv">$controllerName</span> )</code>
<span class="desc">Sets the default controller name</span>
</a>
<a class="api-item" href="#mvcrouter-setdefaultmodule">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setDefaultModule</span>( <span class="st">string</span> <span class="sv">$moduleName</span> )</code>
<span class="desc">Sets the name of the default module</span>
</a>
<a class="api-item" href="#mvcrouter-setdefaultnamespace">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setDefaultNamespace</span>( <span class="st">string</span> <span class="sv">$namespaceName</span> )</code>
<span class="desc">Sets the name of the default namespace</span>
</a>
<a class="api-item" href="#mvcrouter-setdefaults">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setDefaults</span>( <span class="st">array</span> <span class="sv">$defaults</span> )</code>
<span class="desc">Sets an array of default paths. If a route is missing a path the router</span>
</a>
<a class="api-item" href="#mvcrouter-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets the events manager</span>
</a>
<a class="api-item" href="#mvcrouter-setkeyrouteids">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setKeyRouteIds</span>( <span class="st">array</span> <span class="sv">$routeIds</span> )</code>
</a>
<a class="api-item" href="#mvcrouter-setkeyroutenames">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setKeyRouteNames</span>( <span class="st">array</span> <span class="sv">$routeNames</span> )</code>
</a>
<a class="api-item" href="#mvcrouter-seturisource">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setUriSource</span>( <span class="st">int</span> <span class="sv">$uriSource</span> )</code>
<span class="desc">Sets the URI source. One of the URI_SOURCE_* constants</span>
</a>
<a class="api-item" href="#mvcrouter-usecache">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">useCache</span>(<span class="prm"><span class="st">CacheAdapterInterface</span> <span class="sv">$cache</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$key</span><span class="sm"> = &quot;phalcon.router.dispatcher&quot;</span></span>)</code>
<span class="desc">Cache-instance convenience wrapper. On cache hit, restores the</span>
</a>
<a class="api-item" href="#mvcrouter-wasmatched">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">wasMatched</span>()</code>
<span class="desc">Checks if the router matches any of the defined routes</span>
</a>
<a class="api-item" href="#mvcrouter-addroutefromconfig">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">addRouteFromConfig</span>( <span class="st">array</span> <span class="sv">$routeData</span> )</code>
<span class="desc">Adds a single route from a config array entry. Used by loadFromConfig.</span>
</a>
<a class="api-item" href="#mvcrouter-extractrealuri">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">extractRealUri</span>( <span class="st">string</span> <span class="sv">$uri</span> )</code>
</a>
<a class="api-item" href="#mvcrouter-mountgroupfromconfig">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">mountGroupFromConfig</span>( <span class="st">array</span> <span class="sv">$groupData</span> )</code>
<span class="desc">Builds a Group from a config entry and mounts it. Used by loadFromConfig.</span>
</a>
<a class="api-item" href="#mvcrouter-rebuildmethodindex">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">rebuildMethodIndex</span>()</code>
<span class="desc">Rebuilds the HTTP-method index from the current routes array.</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">POSITION_FIRST</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">POSITION_LAST</span><span class="sm"> = 1</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">REGEX_CHUNK_SIZE</span><span class="sm"> = 10</span></code>
<span class="desc">Number of alternatives per combined-regex chunk. Empirically derived (FastRoute uses ~10) - keeps each chunk below PCRE&#039;s optimizer cliff.</span>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">URI_SOURCE_GET_URL</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">URI_SOURCE_SERVER_REQUEST_URI</span><span class="sm"> = 1</span></code>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$action</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$candidatesByMethod</span><span class="sm"> = []</span></code>
<span class="desc">Pre-merged per-method candidate buckets in attach order. For each HTTP method seen on any registered route, the bucket contains the method-specific routes followed by the &quot;*&quot; (no-constraint) routes. The &quot;*&quot; key itself holds only the no-constraint routes - used when the request method has no specific bucket. Built in rebuildMethodIndex(); consumed by handle() in reverse.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$combinedRegexByMethod</span><span class="sm"> = []</span></code>
<span class="desc">Combined PCRE pattern per method bucket (chunked list of strings). Each chunk uses (?|...) branch reset and (*:N) mark labels. Built only when the bucket meets gating: no hostname routes; standard pattern shape.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$combinedRegexDisabled</span><span class="sm"> = []</span></code>
<span class="desc">Boolean per method bucket: true when the combined regex cannot be built (hostname route present, exotic pattern shape, etc.).</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$combinedRegexMarkMap</span><span class="sm"> = []</span></code>
<span class="desc">Map from MARK label back to the route index in candidatesByMethod[method]. One per chunk. combinedRegexMarkMap[method][chunkIdx][markLabel] = routeIdx</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$controller</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$defaultAction</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$defaultController</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$defaultModule</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$defaultNamespace</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$defaultParams</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$eventsManager</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hostnameByMethod</span><span class="sm"> = []</span></code>
<span class="desc">Per-method buckets of routes with hostname constraints, grouped by raw hostname string. Routes are referenced by their index into candidatesByMethod[method]. Built in rebuildMethodIndex(). Shape: hostnameByMethod[method][hostname] = list of route indices.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$hostnameLessByMethod</span><span class="sm"> = []</span></code>
<span class="desc">Per-method indices of routes without a hostname constraint, in attach order. Shape: hostnameLessByMethod[method] = list of route indices into candidatesByMethod[method].</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$keyRouteIds</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$keyRouteNames</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">RouteInterface|null</code>
<code class="sig"><span class="sv">$matchedRoute</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$matches</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$methodRoutes</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$methodRoutesDirty</span><span class="sm"> = true</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$module</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$namespaceName</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sv">$notFoundPaths</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$params</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">CacheAdapterInterface|null</code>
<code class="sig"><span class="sv">$pendingCache</span><span class="sm"> = null</span></code>
<span class="desc">Lazy-write cache target set by useCache(). When non-null, handle() writes buildDispatcherDump() to this cache after a successful rebuild on cache miss, then clears the property to skip subsequent writes.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$pendingCacheKey</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$removeExtraSlashes</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$routeMeta</span><span class="sm"> = []</span></code>
<span class="desc">Single-source per-route metadata cache. One entry per route, keyed by the route&#039;s intrinsic id. Replaces the previous per-method-bucket replication of metadata arrays. Built once in rebuildMethodIndex(). Shape: routeMeta[routeId] = [ &quot;pattern&quot;:     string,        // compiled pattern &quot;isRegex&quot;:     bool, &quot;hostname&quot;:    string|null, &quot;hostRegex&quot;:   string|null, &quot;beforeMatch&quot;: callable|null ]</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$routes</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$staticByMethod</span><span class="sm"> = []</span></code>
<span class="desc">Static-route hash, populated by rebuildMethodIndex(). For each method bucket (including &quot;*&quot;), maps URI =&gt; list of routes whose compiled pattern is a literal string equal to that URI.</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$staticShadowedByMethod</span><span class="sm"> = []</span></code>
<span class="desc">Shadow-detection map. If staticShadowedByMethod[method][uri] is set, the static URI in that bucket is shadowed by a later-attached regex route - the fast path MUST NOT be used; fall through to the dynamic loop so the regex wins (reverse-iteration semantics).</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$uriSource</span><span class="sm"> = self::URI_SOURCE_GET_URL</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$wasMatched</span><span class="sm"> = false</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 51</div>

<h4 id="mvcrouter-__construct"><code>__construct()</code></h4>

```php
public function __construct( bool $defaultRoutes = true );
```

Phalcon\Mvc\Router constructor

<h4 id="mvcrouter-add"><code>add()</code></h4>

```php
public function add(
string $pattern,
mixed $paths = null,
mixed $httpMethods = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router without any HTTP constraint

```php
use Phalcon\Mvc\Router;

$router->add("/about", "About::index");

$router->add(
"/about",
"About::index",
["GET", "POST"]
);

$router->add(
"/about",
"About::index",
["GET", "POST"],
Router::POSITION_FIRST
);
```

<h4 id="mvcrouter-addconnect"><code>addConnect()</code></h4>

```php
public function addConnect(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is CONNECT

<h4 id="mvcrouter-adddelete"><code>addDelete()</code></h4>

```php
public function addDelete(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is DELETE

<h4 id="mvcrouter-addget"><code>addGet()</code></h4>

```php
public function addGet(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is GET

<h4 id="mvcrouter-addhead"><code>addHead()</code></h4>

```php
public function addHead(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is HEAD

<h4 id="mvcrouter-addoptions"><code>addOptions()</code></h4>

```php
public function addOptions(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Add a route to the router that only match if the HTTP method is OPTIONS

<h4 id="mvcrouter-addpatch"><code>addPatch()</code></h4>

```php
public function addPatch(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PATCH

<h4 id="mvcrouter-addpost"><code>addPost()</code></h4>

```php
public function addPost(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is POST

<h4 id="mvcrouter-addpurge"><code>addPurge()</code></h4>

```php
public function addPurge(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PURGE
(Squid and Varnish support)

<h4 id="mvcrouter-addput"><code>addPut()</code></h4>

```php
public function addPut(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PUT

<h4 id="mvcrouter-addtrace"><code>addTrace()</code></h4>

```php
public function addTrace(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is TRACE

<h4 id="mvcrouter-attach"><code>attach()</code></h4>

```php
public function attach(
RouteInterface $route,
int $position = Router::POSITION_LAST
): static;
```

Attach Route object to the routes stack.

```php
use Phalcon\Mvc\Router;
use Phalcon\Mvc\Router\Route;

class CustomRoute extends Route {
 // ...
}

$router = new Router();

$router->attach(
new CustomRoute("/about", "About::index", ["GET", "HEAD"]),
Router::POSITION_FIRST
);
```

<h4 id="mvcrouter-builddispatcherdump"><code>buildDispatcherDump()</code></h4>

```php
public function buildDispatcherDump(): array;
```

Produces a pure-data array describing every piece of state needed
to reconstruct this router. The returned array is var_export-able
(no objects, no closures). Used by dumpDispatcher() and by
Phalcon\Cache integration via useCache().

Throws when a route has a Closure beforeMatch or converter - those
cannot be cached.

<h4 id="mvcrouter-clear"><code>clear()</code></h4>

```php
public function clear(): void;
```

Removes all the pre-defined routes

<h4 id="mvcrouter-dumpdispatcher"><code>dumpDispatcher()</code></h4>

```php
public function dumpDispatcher( string $path ): void;
```

File-shaped helper around buildDispatcherDump(). Writes the dump as
a `<?php return [...];` file, atomically (temp + rename) so concurrent
dumps don't corrupt the result.

<h4 id="mvcrouter-getactionname"><code>getActionName()</code></h4>

```php
public function getActionName(): string;
```

Returns the processed action name

<h4 id="mvcrouter-getcontrollername"><code>getControllerName()</code></h4>

```php
public function getControllerName(): string;
```

Returns the processed controller name

<h4 id="mvcrouter-getdefaults"><code>getDefaults()</code></h4>

```php
public function getDefaults(): array;
```

Returns an array of default parameters

<h4 id="mvcrouter-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): ManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvcrouter-getkeyrouteids"><code>getKeyRouteIds()</code></h4>

```php
public function getKeyRouteIds(): array;
```

<h4 id="mvcrouter-getkeyroutenames"><code>getKeyRouteNames()</code></h4>

```php
public function getKeyRouteNames(): array;
```

<h4 id="mvcrouter-getmatchedroute"><code>getMatchedRoute()</code></h4>

```php
public function getMatchedRoute(): RouteInterface|null;
```

Returns the route that matches the handled URI

<h4 id="mvcrouter-getmatches"><code>getMatches()</code></h4>

```php
public function getMatches(): array;
```

Returns the sub expressions in the regular expression matched

<h4 id="mvcrouter-getmethodroutes"><code>getMethodRoutes()</code></h4>

```php
public function getMethodRoutes(): array;
```

Returns the routes indexed by HTTP method.
Routes with no HTTP constraint are stored under the "*" key.

<h4 id="mvcrouter-getmodulename"><code>getModuleName()</code></h4>

```php
public function getModuleName(): string;
```

Returns the processed module name

<h4 id="mvcrouter-getnamespacename"><code>getNamespaceName()</code></h4>

```php
public function getNamespaceName(): string;
```

Returns the processed namespace name

<h4 id="mvcrouter-getparams"><code>getParams()</code></h4>

```php
public function getParams(): array;
```

Returns the processed parameters

<h4 id="mvcrouter-getrewriteuri"><code>getRewriteUri()</code></h4>

```php
public function getRewriteUri(): string;
```

Get rewrite info. This info is read from $_GET["_url"].
This returns '/' if the rewrite information cannot be read

<h4 id="mvcrouter-getroutebyid"><code>getRouteById()</code></h4>

```php
public function getRouteById( mixed $routeId ): RouteInterface|bool;
```

Returns a route object by its id

<h4 id="mvcrouter-getroutebyname"><code>getRouteByName()</code></h4>

```php
public function getRouteByName( string $name ): RouteInterface|bool;
```

Returns a route object by its name

<h4 id="mvcrouter-getroutes"><code>getRoutes()</code></h4>

```php
public function getRoutes(): RouteInterface[];
```

Returns all the routes defined in the router

<h4 id="mvcrouter-handle"><code>handle()</code></h4>

```php
public function handle( string $uri ): void;
```

Handles routing information received from the rewrite engine

```php
// Passing a URL
$router->handle("/posts/edit/1");
```

<h4 id="mvcrouter-isexactcontrollername"><code>isExactControllerName()</code></h4>

```php
public function isExactControllerName(): bool;
```

Returns whether controller name should not be mangled

<h4 id="mvcrouter-loaddispatcher"><code>loadDispatcher()</code></h4>

```php
public function loadDispatcher( string $path ): void;
```

File-shaped helper around loadDispatcherFromArray(). Includes the
file (opcache-friendly) and forwards the return value.

<h4 id="mvcrouter-loaddispatcherfromarray"><code>loadDispatcherFromArray()</code></h4>

```php
public function loadDispatcherFromArray( array $dump ): void;
```

Inverse of buildDispatcherDump(). Reconstructs every Route from the
scalar `routes` entries (preserving subclass and routeId), restores
every index, and marks the indexes clean so handle() skips rebuild.

<h4 id="mvcrouter-loadfromconfig"><code>loadFromConfig()</code></h4>

```php
public function loadFromConfig( mixed $config ): static;
```

Loads routes from an array or Phalcon\Config\Config instance.

```php
$router->loadFromConfig(
 [
     'routes' => [
         [
             'method'  => 'get',
             'pattern' => '/users',
             'paths'   => 'Users::index',
         ],
     ],
 ]
 );
```

<h4 id="mvcrouter-mount"><code>mount()</code></h4>

```php
public function mount( GroupInterface $group ): static;
```

Mounts a group of routes in the router

<h4 id="mvcrouter-notfound"><code>notFound()</code></h4>

```php
public function notFound( mixed $paths ): static;
```

Set a group of paths to be returned when none of the defined routes are
matched

<h4 id="mvcrouter-removeextraslashes"><code>removeExtraSlashes()</code></h4>

```php
public function removeExtraSlashes( bool $remove ): static;
```

Set whether router must remove the extra slashes in the handled routes

<h4 id="mvcrouter-setdefaultaction"><code>setDefaultAction()</code></h4>

```php
public function setDefaultAction( string $actionName ): static;
```

Sets the default action name

<h4 id="mvcrouter-setdefaultcontroller"><code>setDefaultController()</code></h4>

```php
public function setDefaultController( string $controllerName ): static;
```

Sets the default controller name

<h4 id="mvcrouter-setdefaultmodule"><code>setDefaultModule()</code></h4>

```php
public function setDefaultModule( string $moduleName ): static;
```

Sets the name of the default module

<h4 id="mvcrouter-setdefaultnamespace"><code>setDefaultNamespace()</code></h4>

```php
public function setDefaultNamespace( string $namespaceName ): static;
```

Sets the name of the default namespace

@parma string namespaceName

<h4 id="mvcrouter-setdefaults"><code>setDefaults()</code></h4>

```php
public function setDefaults( array $defaults ): static;
```

Sets an array of default paths. If a route is missing a path the router
will use the defined here. This method must not be used to set a 404
route

```php
$router->setDefaults(
[
    "module" => "common",
    "action" => "index",
]
);
```

<h4 id="mvcrouter-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( ManagerInterface $eventsManager ): void;
```

Sets the events manager

<h4 id="mvcrouter-setkeyrouteids"><code>setKeyRouteIds()</code></h4>

```php
public function setKeyRouteIds( array $routeIds ): static;
```

<h4 id="mvcrouter-setkeyroutenames"><code>setKeyRouteNames()</code></h4>

```php
public function setKeyRouteNames( array $routeNames ): static;
```

<h4 id="mvcrouter-seturisource"><code>setUriSource()</code></h4>

```php
public function setUriSource( int $uriSource ): static;
```

Sets the URI source. One of the URI_SOURCE_* constants

```php
$router->setUriSource(
Router::URI_SOURCE_SERVER_REQUEST_URI
);
```

<h4 id="mvcrouter-usecache"><code>useCache()</code></h4>

```php
public function useCache(
CacheAdapterInterface $cache,
string $key = "phalcon.router.dispatcher"
): void;
```

Cache-instance convenience wrapper. On cache hit, restores the
dispatcher immediately. On miss, defers cache population until the
next handle() completes - at which point buildDispatcherDump() is
written to the cache key.

<h4 id="mvcrouter-wasmatched"><code>wasMatched()</code></h4>

```php
public function wasMatched(): bool;
```

Checks if the router matches any of the defined routes

<div class="api-group">Protected · 4</div>

<h4 id="mvcrouter-addroutefromconfig"><code>addRouteFromConfig()</code></h4>

```php
protected function addRouteFromConfig( array $routeData ): void;
```

Adds a single route from a config array entry. Used by loadFromConfig.

<h4 id="mvcrouter-extractrealuri"><code>extractRealUri()</code></h4>

```php
protected function extractRealUri( string $uri ): string;
```

<h4 id="mvcrouter-mountgroupfromconfig"><code>mountGroupFromConfig()</code></h4>

```php
protected function mountGroupFromConfig( array $groupData ): void;
```

Builds a Group from a config entry and mounts it. Used by loadFromConfig.

<h4 id="mvcrouter-rebuildmethodindex"><code>rebuildMethodIndex()</code></h4>

```php
protected function rebuildMethodIndex(): void;
```

Rebuilds the HTTP-method index from the current routes array.
Routes with no HTTP method constraint are filed under "*".

## Mvc\RouterInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/RouterInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\Router

<div class="api-tree">

- **`Phalcon\Mvc\RouterInterface`**

</div>

__Uses__ `Phalcon\Mvc\Router\GroupInterface` · `Phalcon\Mvc\Router\RouteInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterinterface-add">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">add</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$httpMethods</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router on any HTTP method</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addconnect">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addConnect</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is CONNECT</span>
</a>
<a class="api-item" href="#mvcrouterinterface-adddelete">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addDelete</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is DELETE</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addget">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addGet</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is GET</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addhead">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addHead</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is HEAD</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addoptions">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addOptions</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Add a route to the router that only match if the HTTP method is OPTIONS</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addpatch">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPatch</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PATCH</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addpost">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPost</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is POST</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addpurge">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPurge</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PURGE</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addput">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPut</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PUT</span>
</a>
<a class="api-item" href="#mvcrouterinterface-addtrace">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addTrace</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is TRACE</span>
</a>
<a class="api-item" href="#mvcrouterinterface-attach">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">attach</span>(<span class="prm"><span class="st">RouteInterface</span> <span class="sv">$route</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$position</span><span class="sm"> = Router::POSITION_LAST</span></span>)</code>
<span class="desc">Attach Route object to the routes stack.</span>
</a>
<a class="api-item" href="#mvcrouterinterface-clear">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">clear</span>()</code>
<span class="desc">Removes all the defined routes</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getactionname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActionName</span>()</code>
<span class="desc">Returns processed action name</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getcontrollername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getControllerName</span>()</code>
<span class="desc">Returns processed controller name</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getmatchedroute">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface|null</code>
<code class="sig"><span class="sf">getMatchedRoute</span>()</code>
<span class="desc">Returns the route that matches the handled URI</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getmatches">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getMatches</span>()</code>
<span class="desc">Return the sub expressions in the regular expression matched</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getmodulename">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getModuleName</span>()</code>
<span class="desc">Returns processed module name</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getnamespacename">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getNamespaceName</span>()</code>
<span class="desc">Returns processed namespace name</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getparams">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getParams</span>()</code>
<span class="desc">Returns processed extra params</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getroutebyid">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface|bool</code>
<code class="sig"><span class="sf">getRouteById</span>( <span class="st">mixed</span> <span class="sv">$routeId</span> )</code>
<span class="desc">Returns a route object by its id</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getroutebyname">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface|bool</code>
<code class="sig"><span class="sf">getRouteByName</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
<span class="desc">Returns a route object by its name</span>
</a>
<a class="api-item" href="#mvcrouterinterface-getroutes">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface[]</code>
<code class="sig"><span class="sf">getRoutes</span>()</code>
<span class="desc">Return all the routes defined in the router</span>
</a>
<a class="api-item" href="#mvcrouterinterface-handle">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">handle</span>( <span class="st">string</span> <span class="sv">$uri</span> )</code>
<span class="desc">Handles routing information received from the rewrite engine</span>
</a>
<a class="api-item" href="#mvcrouterinterface-loadfromconfig">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">loadFromConfig</span>( <span class="st">mixed</span> <span class="sv">$config</span> )</code>
<span class="desc">Loads routes from an array or Phalcon\Config\Config instance.</span>
</a>
<a class="api-item" href="#mvcrouterinterface-mount">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">mount</span>( <span class="st">GroupInterface</span> <span class="sv">$group</span> )</code>
<span class="desc">Mounts a group of routes in the router</span>
</a>
<a class="api-item" href="#mvcrouterinterface-setdefaultaction">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">setDefaultAction</span>( <span class="st">string</span> <span class="sv">$actionName</span> )</code>
<span class="desc">Sets the default action name</span>
</a>
<a class="api-item" href="#mvcrouterinterface-setdefaultcontroller">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">setDefaultController</span>( <span class="st">string</span> <span class="sv">$controllerName</span> )</code>
<span class="desc">Sets the default controller name</span>
</a>
<a class="api-item" href="#mvcrouterinterface-setdefaultmodule">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">setDefaultModule</span>( <span class="st">string</span> <span class="sv">$moduleName</span> )</code>
<span class="desc">Sets the name of the default module</span>
</a>
<a class="api-item" href="#mvcrouterinterface-setdefaults">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">setDefaults</span>( <span class="st">array</span> <span class="sv">$defaults</span> )</code>
<span class="desc">Sets an array of default paths</span>
</a>
<a class="api-item" href="#mvcrouterinterface-wasmatched">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">wasMatched</span>()</code>
<span class="desc">Check if the router matches any of the defined routes</span>
</a>
</div>

### Methods

<div class="api-group">Public · 31</div>

<h4 id="mvcrouterinterface-add"><code>add()</code></h4>

```php
public function add(
string $pattern,
mixed $paths = null,
mixed $httpMethods = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router on any HTTP method

<h4 id="mvcrouterinterface-addconnect"><code>addConnect()</code></h4>

```php
public function addConnect(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is CONNECT

<h4 id="mvcrouterinterface-adddelete"><code>addDelete()</code></h4>

```php
public function addDelete(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is DELETE

<h4 id="mvcrouterinterface-addget"><code>addGet()</code></h4>

```php
public function addGet(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is GET

<h4 id="mvcrouterinterface-addhead"><code>addHead()</code></h4>

```php
public function addHead(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is HEAD

<h4 id="mvcrouterinterface-addoptions"><code>addOptions()</code></h4>

```php
public function addOptions(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Add a route to the router that only match if the HTTP method is OPTIONS

<h4 id="mvcrouterinterface-addpatch"><code>addPatch()</code></h4>

```php
public function addPatch(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PATCH

<h4 id="mvcrouterinterface-addpost"><code>addPost()</code></h4>

```php
public function addPost(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is POST

<h4 id="mvcrouterinterface-addpurge"><code>addPurge()</code></h4>

```php
public function addPurge(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PURGE
(Squid and Varnish support)

<h4 id="mvcrouterinterface-addput"><code>addPut()</code></h4>

```php
public function addPut(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PUT

<h4 id="mvcrouterinterface-addtrace"><code>addTrace()</code></h4>

```php
public function addTrace(
string $pattern,
mixed $paths = null,
int $position = Router::POSITION_LAST
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is TRACE

<h4 id="mvcrouterinterface-attach"><code>attach()</code></h4>

```php
public function attach(
RouteInterface $route,
int $position = Router::POSITION_LAST
): RouterInterface;
```

Attach Route object to the routes stack.

<h4 id="mvcrouterinterface-clear"><code>clear()</code></h4>

```php
public function clear(): void;
```

Removes all the defined routes

<h4 id="mvcrouterinterface-getactionname"><code>getActionName()</code></h4>

```php
public function getActionName(): string;
```

Returns processed action name

<h4 id="mvcrouterinterface-getcontrollername"><code>getControllerName()</code></h4>

```php
public function getControllerName(): string;
```

Returns processed controller name

<h4 id="mvcrouterinterface-getmatchedroute"><code>getMatchedRoute()</code></h4>

```php
public function getMatchedRoute(): RouteInterface|null;
```

Returns the route that matches the handled URI

<h4 id="mvcrouterinterface-getmatches"><code>getMatches()</code></h4>

```php
public function getMatches(): array;
```

Return the sub expressions in the regular expression matched

<h4 id="mvcrouterinterface-getmodulename"><code>getModuleName()</code></h4>

```php
public function getModuleName(): string;
```

Returns processed module name

<h4 id="mvcrouterinterface-getnamespacename"><code>getNamespaceName()</code></h4>

```php
public function getNamespaceName(): string;
```

Returns processed namespace name

<h4 id="mvcrouterinterface-getparams"><code>getParams()</code></h4>

```php
public function getParams(): array;
```

Returns processed extra params

<h4 id="mvcrouterinterface-getroutebyid"><code>getRouteById()</code></h4>

```php
public function getRouteById( mixed $routeId ): RouteInterface|bool;
```

Returns a route object by its id

<h4 id="mvcrouterinterface-getroutebyname"><code>getRouteByName()</code></h4>

```php
public function getRouteByName( string $name ): RouteInterface|bool;
```

Returns a route object by its name

<h4 id="mvcrouterinterface-getroutes"><code>getRoutes()</code></h4>

```php
public function getRoutes(): RouteInterface[];
```

Return all the routes defined in the router

<h4 id="mvcrouterinterface-handle"><code>handle()</code></h4>

```php
public function handle( string $uri ): void;
```

Handles routing information received from the rewrite engine

<h4 id="mvcrouterinterface-loadfromconfig"><code>loadFromConfig()</code></h4>

```php
public function loadFromConfig( mixed $config ): RouterInterface;
```

Loads routes from an array or Phalcon\Config\Config instance.

<h4 id="mvcrouterinterface-mount"><code>mount()</code></h4>

```php
public function mount( GroupInterface $group ): RouterInterface;
```

Mounts a group of routes in the router

<h4 id="mvcrouterinterface-setdefaultaction"><code>setDefaultAction()</code></h4>

```php
public function setDefaultAction( string $actionName ): RouterInterface;
```

Sets the default action name

<h4 id="mvcrouterinterface-setdefaultcontroller"><code>setDefaultController()</code></h4>

```php
public function setDefaultController( string $controllerName ): RouterInterface;
```

Sets the default controller name

<h4 id="mvcrouterinterface-setdefaultmodule"><code>setDefaultModule()</code></h4>

```php
public function setDefaultModule( string $moduleName ): RouterInterface;
```

Sets the name of the default module

<h4 id="mvcrouterinterface-setdefaults"><code>setDefaults()</code></h4>

```php
public function setDefaults( array $defaults ): RouterInterface;
```

Sets an array of default paths

<h4 id="mvcrouterinterface-wasmatched"><code>wasMatched()</code></h4>

```php
public function wasMatched(): bool;
```

Check if the router matches any of the defined routes

## Mvc\Router\Annotations

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Annotations.zep">Source on GitHub</a>

Phalcon\Mvc\Router\Annotations

A router that reads routes annotations from classes/resources

```php
use Phalcon\Mvc\Router\Annotations;

$di->setShared(
"router",
function() {
    // Use the annotations router
    $router = new Annotations(false);

    // This will do the same as above but only if the handled uri starts with /invoices
    $router->addResource("Invoices", "/invoices");

    return $router;
}
);
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\AbstractInjectionAware`](/5.19/api/phalcon_di/#diabstractinjectionaware)
- [`Phalcon\Mvc\Router`](#mvcrouter)
- **`Phalcon\Mvc\Router\Annotations`**

</div>

__Uses__ `Phalcon\Annotations\Annotation` · `Phalcon\Di\DiInterface` · `Phalcon\Mvc\Router` · `Phalcon\Mvc\Router\Exceptions\AnnotationsServiceUnavailable` · `Phalcon\Mvc\Router\Exceptions\InvalidCallbackParameter`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterannotations-addmoduleresource">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">addModuleResource</span>(<span class="prm"><span class="st">string</span> <span class="sv">$module</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$prefix</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a resource to the annotations handler</span>
</a>
<a class="api-item" href="#mvcrouterannotations-addresource">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">addResource</span>(<span class="prm"><span class="st">string</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">string|null</span> <span class="sv">$prefix</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a resource to the annotations handler</span>
</a>
<a class="api-item" href="#mvcrouterannotations-getactionpreformatcallback">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">getActionPreformatCallback</span>()</code>
</a>
<a class="api-item" href="#mvcrouterannotations-getresources">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getResources</span>()</code>
<span class="desc">Return the registered resources</span>
</a>
<a class="api-item" href="#mvcrouterannotations-handle">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">handle</span>( <span class="st">string</span> <span class="sv">$uri</span> )</code>
<span class="desc">Produce the routing parameters from the rewrite information</span>
</a>
<a class="api-item" href="#mvcrouterannotations-processactionannotation">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">processActionAnnotation</span>(<span class="prm"><span class="st">string</span> <span class="sv">$module</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$namespaceName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$controller</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$action</span>,</span><span class="prm"><span class="st">Annotation</span> <span class="sv">$annotation</span></span>)</code>
<span class="desc">Checks for annotations in the public methods of the controller</span>
</a>
<a class="api-item" href="#mvcrouterannotations-processcontrollerannotation">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">processControllerAnnotation</span>(<span class="prm"><span class="st">string</span> <span class="sv">$handler</span>,</span><span class="prm"><span class="st">Annotation</span> <span class="sv">$annotation</span></span>)</code>
<span class="desc">Checks for annotations in the controller docblock</span>
</a>
<a class="api-item" href="#mvcrouterannotations-setactionpreformatcallback">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">setActionPreformatCallback</span>( <span class="st">mixed</span> <span class="sv">$callback</span><span class="sm"> = null</span> )</code>
<span class="desc">Sets the action preformat callback</span>
</a>
<a class="api-item" href="#mvcrouterannotations-setactionsuffix">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">setActionSuffix</span>( <span class="st">string</span> <span class="sv">$actionSuffix</span> )</code>
<span class="desc">Changes the action method suffix</span>
</a>
<a class="api-item" href="#mvcrouterannotations-setcontrollersuffix">
<code class="vis vis-public">public</code>
<code class="ret">self</code>
<code class="sig"><span class="sf">setControllerSuffix</span>( <span class="st">string</span> <span class="sv">$controllerSuffix</span> )</code>
<span class="desc">Changes the controller class suffix</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|string|null</code>
<code class="sig"><span class="sv">$actionPreformatCallback</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$actionSuffix</span><span class="sm"> = &quot;Action&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$controllerSuffix</span><span class="sm"> = &quot;Controller&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$handlers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$routePrefix</span><span class="sm"> = &quot;&quot;</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 10</div>

<h4 id="mvcrouterannotations-addmoduleresource"><code>addModuleResource()</code></h4>

```php
public function addModuleResource(
string $module,
string $handler,
string|null $prefix = null
): static;
```

Adds a resource to the annotations handler
A resource is a class that contains routing annotations
The class is located in a module

<h4 id="mvcrouterannotations-addresource"><code>addResource()</code></h4>

```php
public function addResource(
string $handler,
string|null $prefix = null
): static;
```

Adds a resource to the annotations handler
A resource is a class that contains routing annotations

<h4 id="mvcrouterannotations-getactionpreformatcallback"><code>getActionPreformatCallback()</code></h4>

```php
public function getActionPreformatCallback();
```

<h4 id="mvcrouterannotations-getresources"><code>getResources()</code></h4>

```php
public function getResources(): array;
```

Return the registered resources

<h4 id="mvcrouterannotations-handle"><code>handle()</code></h4>

```php
public function handle( string $uri ): void;
```

Produce the routing parameters from the rewrite information

<h4 id="mvcrouterannotations-processactionannotation"><code>processActionAnnotation()</code></h4>

```php
public function processActionAnnotation(
string $module,
string $namespaceName,
string $controller,
string $action,
Annotation $annotation
): void;
```

Checks for annotations in the public methods of the controller

<h4 id="mvcrouterannotations-processcontrollerannotation"><code>processControllerAnnotation()</code></h4>

```php
public function processControllerAnnotation(
string $handler,
Annotation $annotation
);
```

Checks for annotations in the controller docblock

<h4 id="mvcrouterannotations-setactionpreformatcallback"><code>setActionPreformatCallback()</code></h4>

```php
public function setActionPreformatCallback( mixed $callback = null ): self;
```

Sets the action preformat callback
$action here already without suffix 'Action'

```php
// Array as callback
$annotationRouter->setActionPreformatCallback(
 [
     new Uncamelize(),
     '__invoke'
 ]
 );

// Function as callback
$annotationRouter->setActionPreformatCallback(
function ($action) {
    return $action;
}
);

// String as callback
$annotationRouter->setActionPreformatCallback('strtolower');

// If empty method constructor called [null], sets uncamelize with - delimiter
$annotationRouter->setActionPreformatCallback();
```

<h4 id="mvcrouterannotations-setactionsuffix"><code>setActionSuffix()</code></h4>

```php
public function setActionSuffix( string $actionSuffix ): self;
```

Changes the action method suffix

<h4 id="mvcrouterannotations-setcontrollersuffix"><code>setControllerSuffix()</code></h4>

```php
public function setControllerSuffix( string $controllerSuffix ): self;
```

Changes the controller class suffix

## Mvc\Router\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exception.zep">Source on GitHub</a>

Phalcon\Mvc\Router\Exception

Exceptions thrown in Phalcon\Mvc\Router will use this class

<div class="api-tree">

- `\Exception`
- **`Phalcon\Mvc\Router\Exception`**
- [`Phalcon\Mvc\Router\Exceptions\AnnotationsServiceUnavailable`](#mvcrouterexceptionsannotationsserviceunavailable)
- [`Phalcon\Mvc\Router\Exceptions\BeforeMatchNotCallable`](#mvcrouterexceptionsbeforematchnotcallable)
- [`Phalcon\Mvc\Router\Exceptions\ConfigKeyMustBeArray`](#mvcrouterexceptionsconfigkeymustbearray)
- [`Phalcon\Mvc\Router\Exceptions\EmptyGroupOfRoutes`](#mvcrouterexceptionsemptygroupofroutes)
- [`Phalcon\Mvc\Router\Exceptions\GroupRoutesMustBeArray`](#mvcrouterexceptionsgrouproutesmustbearray)
- [`Phalcon\Mvc\Router\Exceptions\InvalidCallbackParameter`](#mvcrouterexceptionsinvalidcallbackparameter)
- [`Phalcon\Mvc\Router\Exceptions\InvalidConfigSource`](#mvcrouterexceptionsinvalidconfigsource)
- [`Phalcon\Mvc\Router\Exceptions\InvalidNotFoundPaths`](#mvcrouterexceptionsinvalidnotfoundpaths)
- [`Phalcon\Mvc\Router\Exceptions\InvalidRoutePaths`](#mvcrouterexceptionsinvalidroutepaths)
- [`Phalcon\Mvc\Router\Exceptions\InvalidRoutePosition`](#mvcrouterexceptionsinvalidrouteposition)
- [`Phalcon\Mvc\Router\Exceptions\InvalidRouterFactoryConfig`](#mvcrouterexceptionsinvalidrouterfactoryconfig)
- [`Phalcon\Mvc\Router\Exceptions\MissingGroupRouteKey`](#mvcrouterexceptionsmissinggrouproutekey)
- [`Phalcon\Mvc\Router\Exceptions\MissingRouteConfigKey`](#mvcrouterexceptionsmissingrouteconfigkey)
- [`Phalcon\Mvc\Router\Exceptions\RequestServiceUnavailable`](#mvcrouterexceptionsrequestserviceunavailable)
- [`Phalcon\Mvc\Router\Exceptions\UnknownHttpMethod`](#mvcrouterexceptionsunknownhttpmethod)
- [`Phalcon\Mvc\Router\Exceptions\WrongPathsKey`](#mvcrouterexceptionswrongpathskey)

</div>

## Mvc\Router\Exceptions\AnnotationsServiceUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/AnnotationsServiceUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\AnnotationsServiceUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsannotationsserviceunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsannotationsserviceunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\BeforeMatchNotCallable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/BeforeMatchNotCallable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\BeforeMatchNotCallable`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsbeforematchnotcallable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsbeforematchnotcallable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\ConfigKeyMustBeArray

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/ConfigKeyMustBeArray.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\ConfigKeyMustBeArray`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsconfigkeymustbearray-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsconfigkeymustbearray-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $key );
```

## Mvc\Router\Exceptions\EmptyGroupOfRoutes

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/EmptyGroupOfRoutes.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\EmptyGroupOfRoutes`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsemptygroupofroutes-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsemptygroupofroutes-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\GroupRoutesMustBeArray

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/GroupRoutesMustBeArray.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\GroupRoutesMustBeArray`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsgrouproutesmustbearray-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsgrouproutesmustbearray-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\InvalidCallbackParameter

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/InvalidCallbackParameter.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\InvalidCallbackParameter`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsinvalidcallbackparameter-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsinvalidcallbackparameter-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\InvalidConfigSource

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/InvalidConfigSource.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\InvalidConfigSource`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsinvalidconfigsource-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsinvalidconfigsource-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\InvalidNotFoundPaths

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/InvalidNotFoundPaths.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\InvalidNotFoundPaths`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsinvalidnotfoundpaths-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsinvalidnotfoundpaths-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\InvalidRoutePaths

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/InvalidRoutePaths.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\InvalidRoutePaths`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsinvalidroutepaths-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsinvalidroutepaths-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\InvalidRoutePosition

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/InvalidRoutePosition.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\InvalidRoutePosition`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsinvalidrouteposition-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsinvalidrouteposition-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\InvalidRouterFactoryConfig

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/InvalidRouterFactoryConfig.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\InvalidRouterFactoryConfig`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsinvalidrouterfactoryconfig-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsinvalidrouterfactoryconfig-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\MissingGroupRouteKey

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/MissingGroupRouteKey.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\MissingGroupRouteKey`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsmissinggrouproutekey-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsmissinggrouproutekey-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $key );
```

## Mvc\Router\Exceptions\MissingRouteConfigKey

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/MissingRouteConfigKey.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\MissingRouteConfigKey`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsmissingrouteconfigkey-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsmissingrouteconfigkey-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $key );
```

## Mvc\Router\Exceptions\RequestServiceUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/RequestServiceUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\RequestServiceUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsrequestserviceunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsrequestserviceunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Router\Exceptions\UnknownHttpMethod

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/UnknownHttpMethod.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\UnknownHttpMethod`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionsunknownhttpmethod-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$method</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionsunknownhttpmethod-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $method );
```

## Mvc\Router\Exceptions\WrongPathsKey

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Exceptions/WrongPathsKey.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Router\Exception`](#mvcrouterexception)
- **`Phalcon\Mvc\Router\Exceptions\WrongPathsKey`**

</div>

__Uses__ `Phalcon\Mvc\Router\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterexceptionswrongpathskey-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$part</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcrouterexceptionswrongpathskey-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $part );
```

## Mvc\Router\Group

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Group.zep">Source on GitHub</a>

Helper class to create a group of routes with common attributes

```php
$router = new \Phalcon\Mvc\Router();

//Create a group with a common module and controller
$blog = new Group(
[
    "module"     => "blog",
    "controller" => "index",
]
);

//All the routes start with /blog
$blog->setPrefix("/blog");

//Add a route to the group
$blog->add(
"/save",
[
    "action" => "save",
]
);

//Add another route to the group
$blog->add(
"/edit/{id}",
[
    "action" => "edit",
]
);

//This route maps to a controller different than the default
$blog->add(
"/blog",
[
    "controller" => "about",
    "action"     => "index",
]
);

//Add the group to the router
$router->mount($blog);
```

<div class="api-tree">

- **`Phalcon\Mvc\Router\Group`** - implements [`Phalcon\Mvc\Router\GroupInterface`](#mvcroutergroupinterface)

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcroutergroup-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span> )</code>
<span class="desc">Phalcon\Mvc\Router\Group constructor</span>
</a>
<a class="api-item" href="#mvcroutergroup-add">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">add</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$httpMethods</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router on any HTTP method</span>
</a>
<a class="api-item" href="#mvcroutergroup-addconnect">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addConnect</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is CONNECT</span>
</a>
<a class="api-item" href="#mvcroutergroup-adddelete">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addDelete</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is DELETE</span>
</a>
<a class="api-item" href="#mvcroutergroup-addget">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addGet</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is GET</span>
</a>
<a class="api-item" href="#mvcroutergroup-addhead">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addHead</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is HEAD</span>
</a>
<a class="api-item" href="#mvcroutergroup-addoptions">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addOptions</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Add a route to the router that only match if the HTTP method is OPTIONS</span>
</a>
<a class="api-item" href="#mvcroutergroup-addpatch">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPatch</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PATCH</span>
</a>
<a class="api-item" href="#mvcroutergroup-addpost">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPost</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is POST</span>
</a>
<a class="api-item" href="#mvcroutergroup-addpurge">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPurge</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PURGE</span>
</a>
<a class="api-item" href="#mvcroutergroup-addput">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPut</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PUT</span>
</a>
<a class="api-item" href="#mvcroutergroup-addtrace">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addTrace</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is TRACE</span>
</a>
<a class="api-item" href="#mvcroutergroup-beforematch">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">beforeMatch</span>( <span class="st">callable</span> <span class="sv">$beforeMatch</span> )</code>
<span class="desc">Sets a callback that is called if the route is matched.</span>
</a>
<a class="api-item" href="#mvcroutergroup-clear">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">clear</span>()</code>
<span class="desc">Removes all the pre-defined routes</span>
</a>
<a class="api-item" href="#mvcroutergroup-getbeforematch">
<code class="vis vis-public">public</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sf">getBeforeMatch</span>()</code>
<span class="desc">Returns the &#039;before match&#039; callback if any</span>
</a>
<a class="api-item" href="#mvcroutergroup-gethostname">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getHostname</span>()</code>
<span class="desc">Returns the hostname restriction</span>
</a>
<a class="api-item" href="#mvcroutergroup-getpaths">
<code class="vis vis-public">public</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sf">getPaths</span>()</code>
<span class="desc">Returns the common paths defined for this group</span>
</a>
<a class="api-item" href="#mvcroutergroup-getprefix">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getPrefix</span>()</code>
<span class="desc">Returns the common prefix for all the routes</span>
</a>
<a class="api-item" href="#mvcroutergroup-getroutes">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface[]</code>
<code class="sig"><span class="sf">getRoutes</span>()</code>
<span class="desc">Returns the routes added to the group</span>
</a>
<a class="api-item" href="#mvcroutergroup-sethostname">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">setHostname</span>( <span class="st">string</span> <span class="sv">$hostname</span> )</code>
<span class="desc">Set a hostname restriction for all the routes in the group</span>
</a>
<a class="api-item" href="#mvcroutergroup-setpaths">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">setPaths</span>( <span class="st">mixed</span> <span class="sv">$paths</span> )</code>
<span class="desc">Set common paths for all the routes in the group</span>
</a>
<a class="api-item" href="#mvcroutergroup-setprefix">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">setPrefix</span>( <span class="st">string</span> <span class="sv">$prefix</span> )</code>
<span class="desc">Set a common uri prefix for all the routes in this group</span>
</a>
<a class="api-item" href="#mvcroutergroup-addroute">
<code class="vis vis-protected">protected</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addRoute</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$httpMethods</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route applying the common attributes</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sv">$beforeMatch</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$hostname</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sv">$paths</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$prefix</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$routes</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 22</div>

<h4 id="mvcroutergroup-__construct"><code>__construct()</code></h4>

```php
public function __construct( mixed $paths = null );
```

Phalcon\Mvc\Router\Group constructor

<h4 id="mvcroutergroup-add"><code>add()</code></h4>

```php
public function add(
string $pattern,
mixed $paths = null,
mixed $httpMethods = null
): RouteInterface;
```

Adds a route to the router on any HTTP method

```php
$router->add("/about", "About::index");
```

<h4 id="mvcroutergroup-addconnect"><code>addConnect()</code></h4>

```php
public function addConnect(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is CONNECT

<h4 id="mvcroutergroup-adddelete"><code>addDelete()</code></h4>

```php
public function addDelete(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is DELETE

<h4 id="mvcroutergroup-addget"><code>addGet()</code></h4>

```php
public function addGet(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is GET

<h4 id="mvcroutergroup-addhead"><code>addHead()</code></h4>

```php
public function addHead(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is HEAD

<h4 id="mvcroutergroup-addoptions"><code>addOptions()</code></h4>

```php
public function addOptions(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Add a route to the router that only match if the HTTP method is OPTIONS

<h4 id="mvcroutergroup-addpatch"><code>addPatch()</code></h4>

```php
public function addPatch(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PATCH

<h4 id="mvcroutergroup-addpost"><code>addPost()</code></h4>

```php
public function addPost(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is POST

<h4 id="mvcroutergroup-addpurge"><code>addPurge()</code></h4>

```php
public function addPurge(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PURGE

<h4 id="mvcroutergroup-addput"><code>addPut()</code></h4>

```php
public function addPut(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PUT

<h4 id="mvcroutergroup-addtrace"><code>addTrace()</code></h4>

```php
public function addTrace(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is TRACE

<h4 id="mvcroutergroup-beforematch"><code>beforeMatch()</code></h4>

```php
public function beforeMatch( callable $beforeMatch ): GroupInterface;
```

Sets a callback that is called if the route is matched.
The developer can implement any arbitrary conditions here
If the callback returns false the route is treated as not matched

<h4 id="mvcroutergroup-clear"><code>clear()</code></h4>

```php
public function clear(): void;
```

Removes all the pre-defined routes

<h4 id="mvcroutergroup-getbeforematch"><code>getBeforeMatch()</code></h4>

```php
public function getBeforeMatch(): callable|null;
```

Returns the 'before match' callback if any

<h4 id="mvcroutergroup-gethostname"><code>getHostname()</code></h4>

```php
public function getHostname(): string|null;
```

Returns the hostname restriction

<h4 id="mvcroutergroup-getpaths"><code>getPaths()</code></h4>

```php
public function getPaths(): array|string|null;
```

Returns the common paths defined for this group

<h4 id="mvcroutergroup-getprefix"><code>getPrefix()</code></h4>

```php
public function getPrefix(): string|null;
```

Returns the common prefix for all the routes

<h4 id="mvcroutergroup-getroutes"><code>getRoutes()</code></h4>

```php
public function getRoutes(): RouteInterface[];
```

Returns the routes added to the group

<h4 id="mvcroutergroup-sethostname"><code>setHostname()</code></h4>

```php
public function setHostname( string $hostname ): GroupInterface;
```

Set a hostname restriction for all the routes in the group

<h4 id="mvcroutergroup-setpaths"><code>setPaths()</code></h4>

```php
public function setPaths( mixed $paths ): GroupInterface;
```

Set common paths for all the routes in the group

<h4 id="mvcroutergroup-setprefix"><code>setPrefix()</code></h4>

```php
public function setPrefix( string $prefix ): GroupInterface;
```

Set a common uri prefix for all the routes in this group

<div class="api-group">Protected · 1</div>

<h4 id="mvcroutergroup-addroute"><code>addRoute()</code></h4>

```php
protected function addRoute(
string $pattern,
mixed $paths = null,
mixed $httpMethods = null
): RouteInterface;
```

Adds a route applying the common attributes

## Mvc\Router\GroupInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/GroupInterface.zep">Source on GitHub</a>

```php
$router = new \Phalcon\Mvc\Router();

// Create a group with a common module and controller
$blog = new Group(
[
    "module"     => "blog",
    "controller" => "index",
]
);

// All the routes start with /blog
$blog->setPrefix("/blog");

// Add a route to the group
$blog->add(
"/save",
[
    "action" => "save",
]
);

// Add another route to the group
$blog->add(
"/edit/{id}",
[
    "action" => "edit",
]
);

// This route maps to a controller different than the default
$blog->add(
"/blog",
[
    "controller" => "about",
    "action"     => "index",
]
);

// Add the group to the router
$router->mount($blog);
```

<div class="api-tree">

- **`Phalcon\Mvc\Router\GroupInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcroutergroupinterface-add">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">add</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$httpMethods</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router on any HTTP method</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addconnect">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addConnect</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is CONNECT</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-adddelete">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addDelete</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is DELETE</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addget">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addGet</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is GET</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addhead">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addHead</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is HEAD</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addoptions">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addOptions</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Add a route to the router that only match if the HTTP method is OPTIONS</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addpatch">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPatch</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PATCH</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addpost">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPost</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is POST</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addpurge">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPurge</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PURGE</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addput">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addPut</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is PUT</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-addtrace">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">addTrace</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Adds a route to the router that only match if the HTTP method is TRACE</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-beforematch">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">beforeMatch</span>( <span class="st">callable</span> <span class="sv">$beforeMatch</span> )</code>
<span class="desc">Sets a callback that is called if the route is matched.</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-clear">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">clear</span>()</code>
<span class="desc">Removes all the pre-defined routes</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-getbeforematch">
<code class="vis vis-public">public</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sf">getBeforeMatch</span>()</code>
<span class="desc">Returns the &#039;before match&#039; callback if any</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-gethostname">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getHostname</span>()</code>
<span class="desc">Returns the hostname restriction</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-getpaths">
<code class="vis vis-public">public</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sf">getPaths</span>()</code>
<span class="desc">Returns the common paths defined for this group</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-getprefix">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getPrefix</span>()</code>
<span class="desc">Returns the common prefix for all the routes</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-getroutes">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface[]</code>
<code class="sig"><span class="sf">getRoutes</span>()</code>
<span class="desc">Returns the routes added to the group</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-sethostname">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">setHostname</span>( <span class="st">string</span> <span class="sv">$hostname</span> )</code>
<span class="desc">Set a hostname restriction for all the routes in the group</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-setpaths">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">setPaths</span>( <span class="st">mixed</span> <span class="sv">$paths</span> )</code>
<span class="desc">Set common paths for all the routes in the group</span>
</a>
<a class="api-item" href="#mvcroutergroupinterface-setprefix">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface</code>
<code class="sig"><span class="sf">setPrefix</span>( <span class="st">string</span> <span class="sv">$prefix</span> )</code>
<span class="desc">Set a common uri prefix for all the routes in this group</span>
</a>
</div>

### Methods

<div class="api-group">Public · 21</div>

<h4 id="mvcroutergroupinterface-add"><code>add()</code></h4>

```php
public function add(
string $pattern,
mixed $paths = null,
mixed $httpMethods = null
): RouteInterface;
```

Adds a route to the router on any HTTP method

```php
router->add("/about", "About::index");
```

<h4 id="mvcroutergroupinterface-addconnect"><code>addConnect()</code></h4>

```php
public function addConnect(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is CONNECT

<h4 id="mvcroutergroupinterface-adddelete"><code>addDelete()</code></h4>

```php
public function addDelete(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is DELETE

<h4 id="mvcroutergroupinterface-addget"><code>addGet()</code></h4>

```php
public function addGet(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is GET

<h4 id="mvcroutergroupinterface-addhead"><code>addHead()</code></h4>

```php
public function addHead(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is HEAD

<h4 id="mvcroutergroupinterface-addoptions"><code>addOptions()</code></h4>

```php
public function addOptions(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Add a route to the router that only match if the HTTP method is OPTIONS

<h4 id="mvcroutergroupinterface-addpatch"><code>addPatch()</code></h4>

```php
public function addPatch(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PATCH

<h4 id="mvcroutergroupinterface-addpost"><code>addPost()</code></h4>

```php
public function addPost(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is POST

<h4 id="mvcroutergroupinterface-addpurge"><code>addPurge()</code></h4>

```php
public function addPurge(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PURGE

<h4 id="mvcroutergroupinterface-addput"><code>addPut()</code></h4>

```php
public function addPut(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is PUT

<h4 id="mvcroutergroupinterface-addtrace"><code>addTrace()</code></h4>

```php
public function addTrace(
string $pattern,
mixed $paths = null
): RouteInterface;
```

Adds a route to the router that only match if the HTTP method is TRACE

<h4 id="mvcroutergroupinterface-beforematch"><code>beforeMatch()</code></h4>

```php
public function beforeMatch( callable $beforeMatch ): GroupInterface;
```

Sets a callback that is called if the route is matched.
The developer can implement any arbitrary conditions here
If the callback returns false the route is treated as not matched

<h4 id="mvcroutergroupinterface-clear"><code>clear()</code></h4>

```php
public function clear(): void;
```

Removes all the pre-defined routes

<h4 id="mvcroutergroupinterface-getbeforematch"><code>getBeforeMatch()</code></h4>

```php
public function getBeforeMatch(): callable|null;
```

Returns the 'before match' callback if any

<h4 id="mvcroutergroupinterface-gethostname"><code>getHostname()</code></h4>

```php
public function getHostname(): string|null;
```

Returns the hostname restriction

<h4 id="mvcroutergroupinterface-getpaths"><code>getPaths()</code></h4>

```php
public function getPaths(): array|string|null;
```

Returns the common paths defined for this group

<h4 id="mvcroutergroupinterface-getprefix"><code>getPrefix()</code></h4>

```php
public function getPrefix(): string|null;
```

Returns the common prefix for all the routes

<h4 id="mvcroutergroupinterface-getroutes"><code>getRoutes()</code></h4>

```php
public function getRoutes(): RouteInterface[];
```

Returns the routes added to the group

<h4 id="mvcroutergroupinterface-sethostname"><code>setHostname()</code></h4>

```php
public function setHostname( string $hostname ): GroupInterface;
```

Set a hostname restriction for all the routes in the group

<h4 id="mvcroutergroupinterface-setpaths"><code>setPaths()</code></h4>

```php
public function setPaths( mixed $paths ): GroupInterface;
```

Set common paths for all the routes in the group

<h4 id="mvcroutergroupinterface-setprefix"><code>setPrefix()</code></h4>

```php
public function setPrefix( string $prefix ): GroupInterface;
```

Set a common uri prefix for all the routes in this group

## Mvc\Router\Route

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/Route.zep">Source on GitHub</a>

This class represents every route added to the router

<div class="api-tree">

- **`Phalcon\Mvc\Router\Route`** - implements [`Phalcon\Mvc\Router\RouteInterface`](#mvcrouterrouteinterface)

</div>

__Uses__ `Phalcon\Mvc\Router\Exceptions\InvalidRoutePaths`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterroute-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$httpMethods</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\Router\Route constructor</span>
</a>
<a class="api-item" href="#mvcrouterroute-beforematch">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">beforeMatch</span>( <span class="st">callable</span> <span class="sv">$callback</span> )</code>
<span class="desc">Sets a callback that is called if the route is matched.</span>
</a>
<a class="api-item" href="#mvcrouterroute-compilepattern">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compilePattern</span>( <span class="st">string</span> <span class="sv">$pattern</span> )</code>
<span class="desc">Replaces placeholders from pattern returning a valid PCRE regular expression</span>
</a>
<a class="api-item" href="#mvcrouterroute-convert">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">convert</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$converter</span></span>)</code>
<span class="desc">\{@inheritdoc\}</span>
</a>
<a class="api-item" href="#mvcrouterroute-extractnamedparams">
<code class="vis vis-public">public</code>
<code class="ret">array|bool</code>
<code class="sig"><span class="sf">extractNamedParams</span>( <span class="st">string</span> <span class="sv">$pattern</span> )</code>
<span class="desc">Extracts parameters from a string</span>
</a>
<a class="api-item" href="#mvcrouterroute-getbeforematch">
<code class="vis vis-public">public</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sf">getBeforeMatch</span>()</code>
<span class="desc">Returns the &#039;before match&#039; callback if any</span>
</a>
<a class="api-item" href="#mvcrouterroute-getcompiledhostname">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getCompiledHostName</span>()</code>
<span class="desc">Returns the compiled hostname regex, or null when the hostname is</span>
</a>
<a class="api-item" href="#mvcrouterroute-getcompiledpattern">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getCompiledPattern</span>()</code>
<span class="desc">Returns the route&#039;s compiled pattern</span>
</a>
<a class="api-item" href="#mvcrouterroute-getconverters">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getConverters</span>()</code>
<span class="desc">Returns the router converter</span>
</a>
<a class="api-item" href="#mvcrouterroute-getgroup">
<code class="vis vis-public">public</code>
<code class="ret">GroupInterface|null</code>
<code class="sig"><span class="sf">getGroup</span>()</code>
<span class="desc">Returns the group associated with the route</span>
</a>
<a class="api-item" href="#mvcrouterroute-gethostname">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getHostname</span>()</code>
<span class="desc">Returns the hostname restriction if any</span>
</a>
<a class="api-item" href="#mvcrouterroute-gethttpmethods">
<code class="vis vis-public">public</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sf">getHttpMethods</span>()</code>
<span class="desc">Returns the HTTP methods that constraint matching the route</span>
</a>
<a class="api-item" href="#mvcrouterroute-getmatch">
<code class="vis vis-public">public</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sf">getMatch</span>()</code>
<span class="desc">Returns the &#039;match&#039; callback if any</span>
</a>
<a class="api-item" href="#mvcrouterroute-getname">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getName</span>()</code>
<span class="desc">Returns the route&#039;s name</span>
</a>
<a class="api-item" href="#mvcrouterroute-getpaths">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getPaths</span>()</code>
<span class="desc">Returns the paths</span>
</a>
<a class="api-item" href="#mvcrouterroute-getpattern">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPattern</span>()</code>
<span class="desc">Returns the route&#039;s pattern</span>
</a>
<a class="api-item" href="#mvcrouterroute-getreversedpaths">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getReversedPaths</span>()</code>
<span class="desc">Returns the paths using positions as keys and names as values</span>
</a>
<a class="api-item" href="#mvcrouterroute-getrouteid">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getRouteId</span>()</code>
<span class="desc">Returns the route&#039;s id</span>
</a>
<a class="api-item" href="#mvcrouterroute-getroutepaths">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getRoutePaths</span>( <span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span> )</code>
<span class="desc">Returns routePaths</span>
</a>
<a class="api-item" href="#mvcrouterroute-match">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">match</span>( <span class="st">mixed</span> <span class="sv">$callback</span> )</code>
<span class="desc">Allows to set a callback to handle the request directly in the route</span>
</a>
<a class="api-item" href="#mvcrouterroute-reconfigure">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">reConfigure</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Reconfigure the route adding a new pattern and a set of paths</span>
</a>
<a class="api-item" href="#mvcrouterroute-reset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Resets the internal route id generator</span>
</a>
<a class="api-item" href="#mvcrouterroute-setgroup">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setGroup</span>( <span class="st">GroupInterface</span> <span class="sv">$group</span> )</code>
<span class="desc">Sets the group associated with the route</span>
</a>
<a class="api-item" href="#mvcrouterroute-sethostname">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setHostname</span>( <span class="st">string</span> <span class="sv">$hostname</span> )</code>
<span class="desc">Sets a hostname restriction to the route</span>
</a>
<a class="api-item" href="#mvcrouterroute-sethttpmethods">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setHttpMethods</span>( <span class="st">mixed</span> <span class="sv">$httpMethods</span> )</code>
<span class="desc">Sets a set of HTTP methods that constraint the matching of the route (alias of via)</span>
</a>
<a class="api-item" href="#mvcrouterroute-setname">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setName</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
<span class="desc">Sets the route&#039;s name</span>
</a>
<a class="api-item" href="#mvcrouterroute-setrouteid">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setRouteId</span>( <span class="st">string</span> <span class="sv">$routeId</span> )</code>
<span class="desc">Sets the route&#039;s id. Intended for restoring cached routes - most</span>
</a>
<a class="api-item" href="#mvcrouterroute-via">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">via</span>( <span class="st">mixed</span> <span class="sv">$httpMethods</span> )</code>
<span class="desc">Set one or more HTTP methods that constraint the matching of the route</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sv">$beforeMatch</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null|false</code>
<code class="sig"><span class="sv">$compiledHostName</span><span class="sm"> = false</span></code>
<span class="desc">Cached compiled hostname regex. <code>false</code> means &quot;not yet computed&quot;; <code>null</code> means &quot;hostname is literal - use string equality&quot;; any string means &quot;use this as the PCRE pattern.&quot;</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$compiledPattern</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$converters</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">GroupInterface|null</code>
<code class="sig"><span class="sv">$group</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$hostname</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">callable|null</code>
<code class="sig"><span class="sv">$match</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sv">$methods</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$name</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$paths</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$pattern</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$routeId</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$uniqueId</span><span class="sm"> = 0</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 28</div>

<h4 id="mvcrouterroute-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $pattern,
mixed $paths = null,
mixed $httpMethods = null
);
```

Phalcon\Mvc\Router\Route constructor

<h4 id="mvcrouterroute-beforematch"><code>beforeMatch()</code></h4>

```php
public function beforeMatch( callable $callback ): RouteInterface;
```

Sets a callback that is called if the route is matched.
The developer can implement any arbitrary conditions here
If the callback returns false the route is treated as not matched

```php
$router->add(
"/login",
[
    "module"     => "admin",
    "controller" => "session",
]
)->beforeMatch(
function ($uri, $route) {
    // Check if the request was made with Ajax
    if ($_SERVER["HTTP_X_REQUESTED_WITH"] === "xmlhttprequest") {
        return false;
    }

    return true;
}
);
```

<h4 id="mvcrouterroute-compilepattern"><code>compilePattern()</code></h4>

```php
public function compilePattern( string $pattern ): string;
```

Replaces placeholders from pattern returning a valid PCRE regular expression

<h4 id="mvcrouterroute-convert"><code>convert()</code></h4>

```php
public function convert(
string $name,
mixed $converter
): RouteInterface;
```

\{@inheritdoc\}

<h4 id="mvcrouterroute-extractnamedparams"><code>extractNamedParams()</code></h4>

```php
public function extractNamedParams( string $pattern ): array|bool;
```

Extracts parameters from a string

<h4 id="mvcrouterroute-getbeforematch"><code>getBeforeMatch()</code></h4>

```php
public function getBeforeMatch(): callable|null;
```

Returns the 'before match' callback if any

<h4 id="mvcrouterroute-getcompiledhostname"><code>getCompiledHostName()</code></h4>

```php
public function getCompiledHostName(): string|null;
```

Returns the compiled hostname regex, or null when the hostname is
literal and a string-equality comparison should be used.

The result is cached after first computation; setHostname() clears
the cache.

<h4 id="mvcrouterroute-getcompiledpattern"><code>getCompiledPattern()</code></h4>

```php
public function getCompiledPattern(): string;
```

Returns the route's compiled pattern

<h4 id="mvcrouterroute-getconverters"><code>getConverters()</code></h4>

```php
public function getConverters(): array;
```

Returns the router converter

<h4 id="mvcrouterroute-getgroup"><code>getGroup()</code></h4>

```php
public function getGroup(): GroupInterface|null;
```

Returns the group associated with the route

<h4 id="mvcrouterroute-gethostname"><code>getHostname()</code></h4>

```php
public function getHostname(): string|null;
```

Returns the hostname restriction if any

<h4 id="mvcrouterroute-gethttpmethods"><code>getHttpMethods()</code></h4>

```php
public function getHttpMethods(): array|string|null;
```

Returns the HTTP methods that constraint matching the route

<h4 id="mvcrouterroute-getmatch"><code>getMatch()</code></h4>

```php
public function getMatch(): callable|null;
```

Returns the 'match' callback if any

<h4 id="mvcrouterroute-getname"><code>getName()</code></h4>

```php
public function getName(): string|null;
```

Returns the route's name

<h4 id="mvcrouterroute-getpaths"><code>getPaths()</code></h4>

```php
public function getPaths(): array;
```

Returns the paths

<h4 id="mvcrouterroute-getpattern"><code>getPattern()</code></h4>

```php
public function getPattern(): string;
```

Returns the route's pattern

<h4 id="mvcrouterroute-getreversedpaths"><code>getReversedPaths()</code></h4>

```php
public function getReversedPaths(): array;
```

Returns the paths using positions as keys and names as values

<h4 id="mvcrouterroute-getrouteid"><code>getRouteId()</code></h4>

```php
public function getRouteId(): string;
```

Returns the route's id

<h4 id="mvcrouterroute-getroutepaths"><code>getRoutePaths()</code></h4>

```php
public static function getRoutePaths( mixed $paths = null ): array;
```

Returns routePaths

<h4 id="mvcrouterroute-match"><code>match()</code></h4>

```php
public function match( mixed $callback ): RouteInterface;
```

Allows to set a callback to handle the request directly in the route

```php
$router->add(
"/help",
[]
)->match(
function () {
    return $this->getResponse()->redirect("https://support.google.com/", true);
}
);
```

<h4 id="mvcrouterroute-reconfigure"><code>reConfigure()</code></h4>

```php
public function reConfigure(
string $pattern,
mixed $paths = null
): void;
```

Reconfigure the route adding a new pattern and a set of paths

<h4 id="mvcrouterroute-reset"><code>reset()</code></h4>

```php
public static function reset(): void;
```

Resets the internal route id generator

<h4 id="mvcrouterroute-setgroup"><code>setGroup()</code></h4>

```php
public function setGroup( GroupInterface $group ): RouteInterface;
```

Sets the group associated with the route

<h4 id="mvcrouterroute-sethostname"><code>setHostname()</code></h4>

```php
public function setHostname( string $hostname ): RouteInterface;
```

Sets a hostname restriction to the route

```php
$route->setHostname("localhost");
```

<h4 id="mvcrouterroute-sethttpmethods"><code>setHttpMethods()</code></h4>

```php
public function setHttpMethods( mixed $httpMethods ): RouteInterface;
```

Sets a set of HTTP methods that constraint the matching of the route (alias of via)

```php
$route->setHttpMethods("GET");

$route->setHttpMethods(
[
    "GET",
    "POST",
]
);
```

<h4 id="mvcrouterroute-setname"><code>setName()</code></h4>

```php
public function setName( string $name ): RouteInterface;
```

Sets the route's name

```php
$router->add(
"/about",
[
    "controller" => "about",
]
)->setName("about");
```

<h4 id="mvcrouterroute-setrouteid"><code>setRouteId()</code></h4>

```php
public function setRouteId( string $routeId ): RouteInterface;
```

Sets the route's id. Intended for restoring cached routes - most
applications should rely on the auto-incrementing id assigned by
the constructor.

<h4 id="mvcrouterroute-via"><code>via()</code></h4>

```php
public function via( mixed $httpMethods ): RouteInterface;
```

Set one or more HTTP methods that constraint the matching of the route

```php
$route->via("GET");

$route->via(
[
    "GET",
    "POST",
]
);
```

## Mvc\Router\RouteInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/RouteInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\Router\Route

<div class="api-tree">

- **`Phalcon\Mvc\Router\RouteInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterrouteinterface-compilepattern">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compilePattern</span>( <span class="st">string</span> <span class="sv">$pattern</span> )</code>
<span class="desc">Replaces placeholders from pattern returning a valid PCRE regular expression</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-convert">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">convert</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$converter</span></span>)</code>
<span class="desc">Adds a converter to perform an additional transformation for certain parameter.</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-getcompiledpattern">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getCompiledPattern</span>()</code>
<span class="desc">Returns the route&#039;s pattern</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-gethostname">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getHostname</span>()</code>
<span class="desc">Returns the hostname restriction if any</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-gethttpmethods">
<code class="vis vis-public">public</code>
<code class="ret">array|string|null</code>
<code class="sig"><span class="sf">getHttpMethods</span>()</code>
<span class="desc">Returns the HTTP methods that constraint matching the route</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-getname">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getName</span>()</code>
<span class="desc">Returns the route&#039;s name</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-getpaths">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getPaths</span>()</code>
<span class="desc">Returns the paths</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-getpattern">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPattern</span>()</code>
<span class="desc">Returns the route&#039;s pattern</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-getreversedpaths">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getReversedPaths</span>()</code>
<span class="desc">Returns the paths using positions as keys and names as values</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-getrouteid">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getRouteId</span>()</code>
<span class="desc">Returns the route&#039;s id</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-reconfigure">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">reConfigure</span>(<span class="prm"><span class="st">string</span> <span class="sv">$pattern</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$paths</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Reconfigure the route adding a new pattern and a set of paths</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-reset">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Resets the internal route id generator</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-sethostname">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setHostname</span>( <span class="st">string</span> <span class="sv">$hostname</span> )</code>
<span class="desc">Sets a hostname restriction to the route</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-sethttpmethods">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setHttpMethods</span>( <span class="st">mixed</span> <span class="sv">$httpMethods</span> )</code>
<span class="desc">Sets a set of HTTP methods that constraint the matching of the route</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-setname">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setName</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
<span class="desc">Sets the route&#039;s name</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-setrouteid">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">setRouteId</span>( <span class="st">string</span> <span class="sv">$routeId</span> )</code>
<span class="desc">Sets the route&#039;s id (intended for restoring cached routes)</span>
</a>
<a class="api-item" href="#mvcrouterrouteinterface-via">
<code class="vis vis-public">public</code>
<code class="ret">RouteInterface</code>
<code class="sig"><span class="sf">via</span>( <span class="st">mixed</span> <span class="sv">$httpMethods</span> )</code>
<span class="desc">Set one or more HTTP methods that constraint the matching of the route</span>
</a>
</div>

### Methods

<div class="api-group">Public · 17</div>

<h4 id="mvcrouterrouteinterface-compilepattern"><code>compilePattern()</code></h4>

```php
public function compilePattern( string $pattern ): string;
```

Replaces placeholders from pattern returning a valid PCRE regular expression

<h4 id="mvcrouterrouteinterface-convert"><code>convert()</code></h4>

```php
public function convert(
string $name,
mixed $converter
): RouteInterface;
```

Adds a converter to perform an additional transformation for certain parameter.

<h4 id="mvcrouterrouteinterface-getcompiledpattern"><code>getCompiledPattern()</code></h4>

```php
public function getCompiledPattern(): string;
```

Returns the route's pattern

<h4 id="mvcrouterrouteinterface-gethostname"><code>getHostname()</code></h4>

```php
public function getHostname(): string|null;
```

Returns the hostname restriction if any

<h4 id="mvcrouterrouteinterface-gethttpmethods"><code>getHttpMethods()</code></h4>

```php
public function getHttpMethods(): array|string|null;
```

Returns the HTTP methods that constraint matching the route

<h4 id="mvcrouterrouteinterface-getname"><code>getName()</code></h4>

```php
public function getName(): string|null;
```

Returns the route's name

<h4 id="mvcrouterrouteinterface-getpaths"><code>getPaths()</code></h4>

```php
public function getPaths(): array;
```

Returns the paths

<h4 id="mvcrouterrouteinterface-getpattern"><code>getPattern()</code></h4>

```php
public function getPattern(): string;
```

Returns the route's pattern

<h4 id="mvcrouterrouteinterface-getreversedpaths"><code>getReversedPaths()</code></h4>

```php
public function getReversedPaths(): array;
```

Returns the paths using positions as keys and names as values

<h4 id="mvcrouterrouteinterface-getrouteid"><code>getRouteId()</code></h4>

```php
public function getRouteId(): string;
```

Returns the route's id

<h4 id="mvcrouterrouteinterface-reconfigure"><code>reConfigure()</code></h4>

```php
public function reConfigure(
string $pattern,
mixed $paths = null
): void;
```

Reconfigure the route adding a new pattern and a set of paths

<h4 id="mvcrouterrouteinterface-reset"><code>reset()</code></h4>

```php
public static function reset(): void;
```

Resets the internal route id generator

<h4 id="mvcrouterrouteinterface-sethostname"><code>setHostname()</code></h4>

```php
public function setHostname( string $hostname ): RouteInterface;
```

Sets a hostname restriction to the route

<h4 id="mvcrouterrouteinterface-sethttpmethods"><code>setHttpMethods()</code></h4>

```php
public function setHttpMethods( mixed $httpMethods ): RouteInterface;
```

Sets a set of HTTP methods that constraint the matching of the route

<h4 id="mvcrouterrouteinterface-setname"><code>setName()</code></h4>

```php
public function setName( string $name ): RouteInterface;
```

Sets the route's name

<h4 id="mvcrouterrouteinterface-setrouteid"><code>setRouteId()</code></h4>

```php
public function setRouteId( string $routeId ): RouteInterface;
```

Sets the route's id (intended for restoring cached routes)

<h4 id="mvcrouterrouteinterface-via"><code>via()</code></h4>

```php
public function via( mixed $httpMethods ): RouteInterface;
```

Set one or more HTTP methods that constraint the matching of the route

## Mvc\Router\RouterFactory

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Router/RouterFactory.zep">Source on GitHub</a>

Phalcon\Mvc\Router\RouterFactory

Builds a Router from an array or ConfigInterface and loads routes via
Router::loadFromConfig.

```php
use Phalcon\Mvc\Router\RouterFactory;

$router = (new RouterFactory())->load(
[
    "defaultRoutes" : false,
    "routes" : [
        ["method" : "get", "pattern" : "/users", "paths" : "Users::index"]
    ]
]
);
```

<div class="api-tree">

- **`Phalcon\Mvc\Router\RouterFactory`**

</div>

__Uses__ `Phalcon\Config\ConfigInterface` · `Phalcon\Mvc\Router` · `Phalcon\Mvc\RouterInterface` · `Phalcon\Mvc\Router\Exceptions\InvalidRouterFactoryConfig`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcrouterrouterfactory-load">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">load</span>( <span class="st">mixed</span> <span class="sv">$config</span> )</code>
<span class="desc">Builds a Router from a config array or ConfigInterface and loads routes.</span>
</a>
<a class="api-item" href="#mvcrouterrouterfactory-newinstance">
<code class="vis vis-public">public</code>
<code class="ret">RouterInterface</code>
<code class="sig"><span class="sf">newInstance</span>( <span class="st">bool</span> <span class="sv">$defaultRoutes</span><span class="sm"> = true</span> )</code>
<span class="desc">Returns a bare Router instance.</span>
</a>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcrouterrouterfactory-load"><code>load()</code></h4>

```php
public function load( mixed $config ): RouterInterface;
```

Builds a Router from a config array or ConfigInterface and loads routes.

<h4 id="mvcrouterrouterfactory-newinstance"><code>newInstance()</code></h4>

```php
public function newInstance( bool $defaultRoutes = true ): RouterInterface;
```

Returns a bare Router instance.

## Mvc\Url

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Url.zep">Source on GitHub</a>

This component helps in the generation of: URIs, URLs and Paths

```php
// Generate a URL appending the URI to the base URI
echo $url->get("products/edit/1");

// Generate a URL for a predefined route
echo $url->get(
[
    "for"   => "blog-post",
    "title" => "some-cool-stuff",
    "year"  => "2012",
]
);
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\AbstractInjectionAware`](/5.19/api/phalcon_di/#diabstractinjectionaware)
- **`Phalcon\Mvc\Url`** - implements [`Phalcon\Mvc\Url\UrlInterface`](#mvcurlurlinterface)

</div>

__Uses__ `Phalcon\Di\AbstractInjectionAware` · `Phalcon\Di\DiInterface` · `Phalcon\Mvc\RouterInterface` · `Phalcon\Mvc\Router\RouteInterface` · `Phalcon\Mvc\Url\Exception` · `Phalcon\Mvc\Url\Exceptions\MissingRouteName` · `Phalcon\Mvc\Url\Exceptions\RouteNotFound` · `Phalcon\Mvc\Url\Exceptions\RouterServiceUnavailable` · `Phalcon\Mvc\Url\UrlInterface` · `Phalcon\Support\Helper\Str\ReduceSlashes`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcurl-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">RouterInterface|null</span> <span class="sv">$router</span><span class="sm"> = null</span> )</code>
</a>
<a class="api-item" href="#mvcurl-get">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">get</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$uri</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$arguments</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool|null</span> <span class="sv">$local</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$baseUri</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$replaceArgs</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Generates a URL</span>
</a>
<a class="api-item" href="#mvcurl-getbasepath">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getBasePath</span>()</code>
<span class="desc">Returns the base path</span>
</a>
<a class="api-item" href="#mvcurl-getbaseuri">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getBaseUri</span>()</code>
<span class="desc">Returns the prefix for all the generated urls. By default /</span>
</a>
<a class="api-item" href="#mvcurl-getstatic">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getStatic</span>( <span class="st">mixed</span> <span class="sv">$uri</span><span class="sm"> = null</span> )</code>
<span class="desc">Generates a URL for a static resource</span>
</a>
<a class="api-item" href="#mvcurl-getstaticbaseuri">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getStaticBaseUri</span>()</code>
<span class="desc">Returns the prefix for all the generated static urls. By default /</span>
</a>
<a class="api-item" href="#mvcurl-path">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">path</span>( <span class="st">string|null</span> <span class="sv">$path</span><span class="sm"> = null</span> )</code>
<span class="desc">Generates a local path</span>
</a>
<a class="api-item" href="#mvcurl-setbasepath">
<code class="vis vis-public">public</code>
<code class="ret">UrlInterface</code>
<code class="sig"><span class="sf">setBasePath</span>( <span class="st">string</span> <span class="sv">$basePath</span> )</code>
<span class="desc">Sets a base path for all the generated paths</span>
</a>
<a class="api-item" href="#mvcurl-setbaseuri">
<code class="vis vis-public">public</code>
<code class="ret">UrlInterface</code>
<code class="sig"><span class="sf">setBaseUri</span>( <span class="st">string</span> <span class="sv">$baseUri</span> )</code>
<span class="desc">Sets a prefix for all the URIs to be generated</span>
</a>
<a class="api-item" href="#mvcurl-setstaticbaseuri">
<code class="vis vis-public">public</code>
<code class="ret">UrlInterface</code>
<code class="sig"><span class="sf">setStaticBaseUri</span>( <span class="st">string</span> <span class="sv">$staticBaseUri</span> )</code>
<span class="desc">Sets a prefix for all static URLs generated</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">null|string</code>
<code class="sig"><span class="sv">$basePath</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">null|string</code>
<code class="sig"><span class="sv">$baseUri</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">RouterInterface|null</code>
<code class="sig"><span class="sv">$router</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">null|string</code>
<code class="sig"><span class="sv">$staticBaseUri</span><span class="sm"> = null</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 10</div>

<h4 id="mvcurl-__construct"><code>__construct()</code></h4>

```php
public function __construct( RouterInterface|null $router = null );
```

<h4 id="mvcurl-get"><code>get()</code></h4>

```php
public function get(
mixed $uri = null,
mixed $arguments = null,
bool|null $local = null,
mixed $baseUri = null,
bool $replaceArgs = false
): string;
```

Generates a URL

```php
// Generate a URL appending the URI to the base URI
echo $url->get("products/edit/1");

// Generate a URL for a predefined route
echo $url->get(
[
    "for"   => "blog-post",
    "title" => "some-cool-stuff",
    "year"  => "2015",
]
);

// Generate a URL with GET arguments (/show/products?id=1&name=Carrots)
echo $url->get(
"show/products",
[
    "id"   => 1,
    "name" => "Carrots",
]
);

// A URI that already carries a scheme is detected as remote and is
// returned untouched. The third parameter is only honored when it is
// explicitly true - a false reads the same as leaving it out.
echo $url->get(
"https://phalcon.io/",
null,
false
);

// Override existing query string keys instead of appending duplicates.
// Without the fifth argument: "http://example.com?page=1&page=5".
// With it set to true:        "http://example.com?page=5".
echo $url->get(
"http://example.com?page=1",
["page" => 5],
null,
null,
true
);
```

<h4 id="mvcurl-getbasepath"><code>getBasePath()</code></h4>

```php
public function getBasePath(): string|null;
```

Returns the base path

<h4 id="mvcurl-getbaseuri"><code>getBaseUri()</code></h4>

```php
public function getBaseUri(): string;
```

Returns the prefix for all the generated urls. By default /

<h4 id="mvcurl-getstatic"><code>getStatic()</code></h4>

```php
public function getStatic( mixed $uri = null ): string;
```

Generates a URL for a static resource

```php
// Generate a URL for a static resource
echo $url->getStatic("img/logo.png");

// Generate a URL for a static predefined route
echo $url->getStatic(
[
    "for" => "logo-cdn",
]
);
```

<h4 id="mvcurl-getstaticbaseuri"><code>getStaticBaseUri()</code></h4>

```php
public function getStaticBaseUri(): string;
```

Returns the prefix for all the generated static urls. By default /

<h4 id="mvcurl-path"><code>path()</code></h4>

```php
public function path( string|null $path = null ): string;
```

Generates a local path

<h4 id="mvcurl-setbasepath"><code>setBasePath()</code></h4>

```php
public function setBasePath( string $basePath ): UrlInterface;
```

Sets a base path for all the generated paths

```php
$url->setBasePath("/var/www/htdocs/");
```

<h4 id="mvcurl-setbaseuri"><code>setBaseUri()</code></h4>

```php
public function setBaseUri( string $baseUri ): UrlInterface;
```

Sets a prefix for all the URIs to be generated

```php
$url->setBaseUri("/invo/");

$url->setBaseUri("/invo/index.php/");
```

<h4 id="mvcurl-setstaticbaseuri"><code>setStaticBaseUri()</code></h4>

```php
public function setStaticBaseUri( string $staticBaseUri ): UrlInterface;
```

Sets a prefix for all static URLs generated

```php
$url->setStaticBaseUri("/invo/");
```

## Mvc\Url\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Url/Exception.zep">Source on GitHub</a>

Phalcon\Mvc\Url\Exception

Exceptions thrown in Phalcon\Mvc\Url will use this class

<div class="api-tree">

- `\Exception`
- **`Phalcon\Mvc\Url\Exception`**
- [`Phalcon\Mvc\Url\Exceptions\MissingRouteName`](#mvcurlexceptionsmissingroutename)
- [`Phalcon\Mvc\Url\Exceptions\RouteNotFound`](#mvcurlexceptionsroutenotfound)
- [`Phalcon\Mvc\Url\Exceptions\RouterServiceUnavailable`](#mvcurlexceptionsrouterserviceunavailable)

</div>

## Mvc\Url\Exceptions\MissingRouteName

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Url/Exceptions/MissingRouteName.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Url\Exception`](#mvcurlexception)
- **`Phalcon\Mvc\Url\Exceptions\MissingRouteName`**

</div>

__Uses__ `Phalcon\Mvc\Url\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcurlexceptionsmissingroutename-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcurlexceptionsmissingroutename-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Url\Exceptions\RouteNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Url/Exceptions/RouteNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Url\Exception`](#mvcurlexception)
- **`Phalcon\Mvc\Url\Exceptions\RouteNotFound`**

</div>

__Uses__ `Phalcon\Mvc\Url\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcurlexceptionsroutenotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcurlexceptionsroutenotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $name );
```

## Mvc\Url\Exceptions\RouterServiceUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Url/Exceptions/RouterServiceUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\Url\Exception`](#mvcurlexception)
- **`Phalcon\Mvc\Url\Exceptions\RouterServiceUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\Url\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcurlexceptionsrouterserviceunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcurlexceptionsrouterserviceunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\Url\UrlInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/Url/UrlInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\Url\UrlInterface

<div class="api-tree">

- **`Phalcon\Mvc\Url\UrlInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcurlurlinterface-get">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">get</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$uri</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$arguments</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool|null</span> <span class="sv">$local</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$baseUri</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$replaceArgs</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Generates a URL</span>
</a>
<a class="api-item" href="#mvcurlurlinterface-getbasepath">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getBasePath</span>()</code>
<span class="desc">Returns a base path</span>
</a>
<a class="api-item" href="#mvcurlurlinterface-getbaseuri">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getBaseUri</span>()</code>
<span class="desc">Returns the prefix for all the generated urls. By default /</span>
</a>
<a class="api-item" href="#mvcurlurlinterface-path">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">path</span>( <span class="st">string|null</span> <span class="sv">$path</span><span class="sm"> = null</span> )</code>
<span class="desc">Generates a local path</span>
</a>
<a class="api-item" href="#mvcurlurlinterface-setbasepath">
<code class="vis vis-public">public</code>
<code class="ret">UrlInterface</code>
<code class="sig"><span class="sf">setBasePath</span>( <span class="st">string</span> <span class="sv">$basePath</span> )</code>
<span class="desc">Sets a base paths for all the generated paths</span>
</a>
<a class="api-item" href="#mvcurlurlinterface-setbaseuri">
<code class="vis vis-public">public</code>
<code class="ret">UrlInterface</code>
<code class="sig"><span class="sf">setBaseUri</span>( <span class="st">string</span> <span class="sv">$baseUri</span> )</code>
<span class="desc">Sets a prefix to all the urls generated</span>
</a>
</div>

### Methods

<div class="api-group">Public · 6</div>

<h4 id="mvcurlurlinterface-get"><code>get()</code></h4>

```php
public function get(
mixed $uri = null,
mixed $arguments = null,
bool|null $local = null,
mixed $baseUri = null,
bool $replaceArgs = false
): string;
```

Generates a URL

<h4 id="mvcurlurlinterface-getbasepath"><code>getBasePath()</code></h4>

```php
public function getBasePath(): string|null;
```

Returns a base path

<h4 id="mvcurlurlinterface-getbaseuri"><code>getBaseUri()</code></h4>

```php
public function getBaseUri(): string;
```

Returns the prefix for all the generated urls. By default /

<h4 id="mvcurlurlinterface-path"><code>path()</code></h4>

```php
public function path( string|null $path = null ): string;
```

Generates a local path

<h4 id="mvcurlurlinterface-setbasepath"><code>setBasePath()</code></h4>

```php
public function setBasePath( string $basePath ): UrlInterface;
```

Sets a base paths for all the generated paths

<h4 id="mvcurlurlinterface-setbaseuri"><code>setBaseUri()</code></h4>

```php
public function setBaseUri( string $baseUri ): UrlInterface;
```

Sets a prefix to all the urls generated

## Mvc\View

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View.zep">Source on GitHub</a>

Phalcon\Mvc\View is a class for working with the "view" portion of the
model-view-controller pattern. That is, it exists to help keep the view
script separate from the model and controller scripts. It provides a system
of helpers, output filters, and variable escaping.

```php
use Phalcon\Mvc\View;

$view = new View();

// Setting views directory
$view->setViewsDir("app/views/");

$view->start();

// Shows recent posts view (app/views/posts/recent.phtml)
$view->render("posts", "recent");
$view->finish();

// Printing views output
echo $view->getContent();
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- **`Phalcon\Mvc\View`** - implements [`Phalcon\Mvc\ViewInterface`](#mvcviewinterface), [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface)

</div>

__Uses__ `Closure` · `Phalcon\Di\DiInterface` · `Phalcon\Di\Injectable` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Mvc\View\Engine\Php` · `Phalcon\Mvc\View\Exception` · `Phalcon\Mvc\View\Exceptions\InvalidEngineRegistration` · `Phalcon\Mvc\View\Exceptions\InvalidViewsDirType` · `Phalcon\Mvc\View\Exceptions\ViewNotFound` · `Phalcon\Mvc\View\Exceptions\ViewServicesUnavailable` · `Phalcon\Mvc\View\Exceptions\ViewsDirItemMustBeString` · `Phalcon\Mvc\View\Traits\ViewParamsTrait` · `Phalcon\Traits\Php\FileTrait` · `Phalcon\Traits\Support\Helper\Str\DirSeparatorTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcview-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span> )</code>
<span class="desc">Phalcon\Mvc\View constructor</span>
</a>
<a class="api-item" href="#mvcview-__get">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">__get</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
<span class="desc">Magic method to retrieve a variable passed to the view</span>
</a>
<a class="api-item" href="#mvcview-__isset">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">__isset</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
<span class="desc">Magic method to retrieve if a variable is set in the view</span>
</a>
<a class="api-item" href="#mvcview-__set">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__set</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Magic method to pass variables to the views</span>
</a>
<a class="api-item" href="#mvcview-cleantemplateafter">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">cleanTemplateAfter</span>()</code>
<span class="desc">Resets any template before layouts</span>
</a>
<a class="api-item" href="#mvcview-cleantemplatebefore">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">cleanTemplateBefore</span>()</code>
<span class="desc">Resets any &quot;template before&quot; layouts</span>
</a>
<a class="api-item" href="#mvcview-disable">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">disable</span>()</code>
<span class="desc">Disables the auto-rendering process</span>
</a>
<a class="api-item" href="#mvcview-disablelevel">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">disableLevel</span>( <span class="st">mixed</span> <span class="sv">$level</span> )</code>
<span class="desc">Disables a specific level of rendering</span>
</a>
<a class="api-item" href="#mvcview-enable">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">enable</span>()</code>
<span class="desc">Enables the auto-rendering process</span>
</a>
<a class="api-item" href="#mvcview-exists">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">exists</span>( <span class="st">string</span> <span class="sv">$view</span> )</code>
<span class="desc">Checks whether view exists</span>
</a>
<a class="api-item" href="#mvcview-finish">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">finish</span>()</code>
<span class="desc">Finishes the render process by stopping the output buffering</span>
</a>
<a class="api-item" href="#mvcview-getactionname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActionName</span>()</code>
<span class="desc">Gets the name of the action rendered</span>
</a>
<a class="api-item" href="#mvcview-getactiverenderpath">
<code class="vis vis-public">public</code>
<code class="ret">string|array</code>
<code class="sig"><span class="sf">getActiveRenderPath</span>()</code>
<span class="desc">Returns the path (or paths) of the views that are currently rendered</span>
</a>
<a class="api-item" href="#mvcview-getbasepath">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getBasePath</span>()</code>
<span class="desc">Gets base path</span>
</a>
<a class="api-item" href="#mvcview-getcontrollername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getControllerName</span>()</code>
<span class="desc">Gets the name of the controller rendered</span>
</a>
<a class="api-item" href="#mvcview-getcurrentrenderlevel">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getCurrentRenderLevel</span>()</code>
</a>
<a class="api-item" href="#mvcview-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvcview-getlayout">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getLayout</span>()</code>
<span class="desc">Returns the name of the main view</span>
</a>
<a class="api-item" href="#mvcview-getlayoutsdir">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getLayoutsDir</span>()</code>
<span class="desc">Gets the current layouts sub-directory</span>
</a>
<a class="api-item" href="#mvcview-getmainview">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getMainView</span>()</code>
<span class="desc">Returns the name of the main view</span>
</a>
<a class="api-item" href="#mvcview-getpartial">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPartial</span>(<span class="prm"><span class="st">string</span> <span class="sv">$partialPath</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Renders a partial view</span>
</a>
<a class="api-item" href="#mvcview-getpartialsdir">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPartialsDir</span>()</code>
<span class="desc">Gets the current partials sub-directory</span>
</a>
<a class="api-item" href="#mvcview-getrender">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getRender</span>(<span class="prm"><span class="st">string</span> <span class="sv">$controllerName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$actionName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$configCallback</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Perform the automatic rendering returning the output as a string</span>
</a>
<a class="api-item" href="#mvcview-getrenderlevel">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">getRenderLevel</span>()</code>
</a>
<a class="api-item" href="#mvcview-getviewsdir">
<code class="vis vis-public">public</code>
<code class="ret">string|array</code>
<code class="sig"><span class="sf">getViewsDir</span>()</code>
<span class="desc">Gets views directory</span>
</a>
<a class="api-item" href="#mvcview-has">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">has</span>( <span class="st">string</span> <span class="sv">$view</span> )</code>
<span class="desc">Checks whether view exists</span>
</a>
<a class="api-item" href="#mvcview-isdisabled">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isDisabled</span>()</code>
<span class="desc">Whether automatic rendering is enabled</span>
</a>
<a class="api-item" href="#mvcview-partial">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">partial</span>(<span class="prm"><span class="st">string</span> <span class="sv">$partialPath</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Renders a partial view</span>
</a>
<a class="api-item" href="#mvcview-pick">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">pick</span>( <span class="st">mixed</span> <span class="sv">$renderView</span> )</code>
<span class="desc">Choose a different view to render instead of last-controller/last-action</span>
</a>
<a class="api-item" href="#mvcview-processrender">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">processRender</span>(<span class="prm"><span class="st">string</span> <span class="sv">$controllerName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$actionName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$fireEvents</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Processes the view and templates; Fires events if needed</span>
</a>
<a class="api-item" href="#mvcview-registerengines">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">registerEngines</span>( <span class="st">array</span> <span class="sv">$engines</span> )</code>
<span class="desc">Register templating engines</span>
</a>
<a class="api-item" href="#mvcview-render">
<code class="vis vis-public">public</code>
<code class="ret">static|false</code>
<code class="sig"><span class="sf">render</span>(<span class="prm"><span class="st">string</span> <span class="sv">$controllerName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$actionName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Executes render process from dispatching data</span>
</a>
<a class="api-item" href="#mvcview-reset">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Resets the view component to its factory default values</span>
</a>
<a class="api-item" href="#mvcview-setbasepath">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setBasePath</span>( <span class="st">string</span> <span class="sv">$basePath</span> )</code>
<span class="desc">Sets base path. Depending of your platform, always add a trailing slash</span>
</a>
<a class="api-item" href="#mvcview-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets the events manager</span>
</a>
<a class="api-item" href="#mvcview-setlayout">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setLayout</span>( <span class="st">string</span> <span class="sv">$layout</span> )</code>
<span class="desc">Change the layout to be used instead of using the name of the latest</span>
</a>
<a class="api-item" href="#mvcview-setlayoutsdir">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setLayoutsDir</span>( <span class="st">string</span> <span class="sv">$layoutsDir</span> )</code>
<span class="desc">Sets the layouts sub-directory. Must be a directory under the views</span>
</a>
<a class="api-item" href="#mvcview-setmainview">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setMainView</span>( <span class="st">string</span> <span class="sv">$viewPath</span> )</code>
<span class="desc">Sets default view name. Must be a file without extension in the views</span>
</a>
<a class="api-item" href="#mvcview-setparamtoview">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setParamToView</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Adds parameters to views (alias of setVar)</span>
</a>
<a class="api-item" href="#mvcview-setpartialsdir">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setPartialsDir</span>( <span class="st">string</span> <span class="sv">$partialsDir</span> )</code>
<span class="desc">Sets a partials sub-directory. Must be a directory under the views</span>
</a>
<a class="api-item" href="#mvcview-setrenderlevel">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setRenderLevel</span>( <span class="st">int</span> <span class="sv">$level</span> )</code>
<span class="desc">Sets the render level for the view</span>
</a>
<a class="api-item" href="#mvcview-settemplateafter">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setTemplateAfter</span>( <span class="st">mixed</span> <span class="sv">$templateAfter</span> )</code>
<span class="desc">Sets a &quot;template after&quot; controller layout</span>
</a>
<a class="api-item" href="#mvcview-settemplatebefore">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setTemplateBefore</span>( <span class="st">mixed</span> <span class="sv">$templateBefore</span> )</code>
<span class="desc">Sets a template before the controller layout</span>
</a>
<a class="api-item" href="#mvcview-setvars">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setVars</span>(<span class="prm"><span class="st">array</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Set all the render params</span>
</a>
<a class="api-item" href="#mvcview-setviewsdir">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setViewsDir</span>( <span class="st">mixed</span> <span class="sv">$viewsDir</span> )</code>
<span class="desc">Sets the views directory. Depending of your platform,</span>
</a>
<a class="api-item" href="#mvcview-start">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">start</span>()</code>
<span class="desc">Starts rendering process enabling the output buffering</span>
</a>
<a class="api-item" href="#mvcview-tostring">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">toString</span>(<span class="prm"><span class="st">string</span> <span class="sv">$controllerName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$actionName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Renders the view and returns it as a string</span>
</a>
<a class="api-item" href="#mvcview-enginerender">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">engineRender</span>(<span class="prm"><span class="st">array</span> <span class="sv">$engines</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$viewPath</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$silence</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$mustClean</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Checks whether view exists on registered extensions and render it</span>
</a>
<a class="api-item" href="#mvcview-getviewsdirs">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getViewsDirs</span>()</code>
<span class="desc">Gets views directories</span>
</a>
<a class="api-item" href="#mvcview-isabsolutepath">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">isAbsolutePath</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
<span class="desc">Checks if a path is absolute or not</span>
</a>
<a class="api-item" href="#mvcview-loadtemplateengines">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">loadTemplateEngines</span>()</code>
<span class="desc">Loads registered template engines, if none is registered it will use</span>
</a>
</div>

### Constants

<div class="api-list">
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">LEVEL_ACTION_VIEW</span><span class="sm"> = 1</span></code>
<span class="desc">Render Level: To the action view</span>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">LEVEL_AFTER_TEMPLATE</span><span class="sm"> = 4</span></code>
<span class="desc">Render Level: Render to the templates &quot;after&quot;</span>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">LEVEL_BEFORE_TEMPLATE</span><span class="sm"> = 2</span></code>
<span class="desc">Render Level: To the templates &quot;before&quot;</span>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">LEVEL_LAYOUT</span><span class="sm"> = 3</span></code>
<span class="desc">Render Level: To the controller layout</span>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">LEVEL_MAIN_LAYOUT</span><span class="sm"> = 5</span></code>
<span class="desc">Render Level: To the main layout</span>
</div>
<div class="api-item">
<code class="ret">int</code>
<code class="sig"><span class="sc">LEVEL_NO_RENDER</span><span class="sm"> = 0</span></code>
<span class="desc">Render Level: No render any view</span>
</div>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$actionName</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$activeRenderPaths</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$basePath</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$controllerName</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$currentRenderLevel</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$disabled</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$disabledLevels</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|bool</code>
<code class="sig"><span class="sv">$engines</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$eventsManager</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$layout</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$layoutsDir</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$mainView</span><span class="sm"> = &quot;index&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$options</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$params</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$partialsDir</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sv">$pickView</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$renderLevel</span><span class="sm"> = 5</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$templatesAfter</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$templatesBefore</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$viewsDirs</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 47</div>

<h4 id="mvcview-__construct"><code>__construct()</code></h4>

```php
public function __construct( array $options = [] );
```

Phalcon\Mvc\View constructor

<h4 id="mvcview-__get"><code>__get()</code></h4>

```php
public function __get( string $key ): mixed|null;
```

Magic method to retrieve a variable passed to the view

```php
echo $this->view->products;
```

<h4 id="mvcview-__isset"><code>__isset()</code></h4>

```php
public function __isset( string $key ): bool;
```

Magic method to retrieve if a variable is set in the view

```php
echo isset($this->view->products);
```

<h4 id="mvcview-__set"><code>__set()</code></h4>

```php
public function __set(
string $key,
mixed $value
);
```

Magic method to pass variables to the views

```php
$this->view->products = $products;
```

<h4 id="mvcview-cleantemplateafter"><code>cleanTemplateAfter()</code></h4>

```php
public function cleanTemplateAfter(): static;
```

Resets any template before layouts

<h4 id="mvcview-cleantemplatebefore"><code>cleanTemplateBefore()</code></h4>

```php
public function cleanTemplateBefore(): static;
```

Resets any "template before" layouts

<h4 id="mvcview-disable"><code>disable()</code></h4>

```php
public function disable(): static;
```

Disables the auto-rendering process

<h4 id="mvcview-disablelevel"><code>disableLevel()</code></h4>

```php
public function disableLevel( mixed $level ): static;
```

Disables a specific level of rendering

```php
// Render all levels except ACTION level
$this->view->disableLevel(
View::LEVEL_ACTION_VIEW
);
```

<h4 id="mvcview-enable"><code>enable()</code></h4>

```php
public function enable(): static;
```

Enables the auto-rendering process

<h4 id="mvcview-exists"><code>exists()</code></h4>

```php
public function exists( string $view ): bool;
```

Checks whether view exists

<h4 id="mvcview-finish"><code>finish()</code></h4>

```php
public function finish(): static;
```

Finishes the render process by stopping the output buffering

<h4 id="mvcview-getactionname"><code>getActionName()</code></h4>

```php
public function getActionName(): string;
```

Gets the name of the action rendered

<h4 id="mvcview-getactiverenderpath"><code>getActiveRenderPath()</code></h4>

```php
public function getActiveRenderPath(): string|array;
```

Returns the path (or paths) of the views that are currently rendered

<h4 id="mvcview-getbasepath"><code>getBasePath()</code></h4>

```php
public function getBasePath(): string;
```

Gets base path

<h4 id="mvcview-getcontrollername"><code>getControllerName()</code></h4>

```php
public function getControllerName(): string;
```

Gets the name of the controller rendered

<h4 id="mvcview-getcurrentrenderlevel"><code>getCurrentRenderLevel()</code></h4>

```php
public function getCurrentRenderLevel(): int;
```

<h4 id="mvcview-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): ManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvcview-getlayout"><code>getLayout()</code></h4>

```php
public function getLayout(): string|null;
```

Returns the name of the main view

<h4 id="mvcview-getlayoutsdir"><code>getLayoutsDir()</code></h4>

```php
public function getLayoutsDir(): string;
```

Gets the current layouts sub-directory

<h4 id="mvcview-getmainview"><code>getMainView()</code></h4>

```php
public function getMainView(): string;
```

Returns the name of the main view

<h4 id="mvcview-getpartial"><code>getPartial()</code></h4>

```php
public function getPartial(
string $partialPath,
mixed $params = null
): string;
```

Renders a partial view

```php
// Retrieve the contents of a partial
echo $this->getPartial("shared/footer");
```

```php
// Retrieve the contents of a partial with arguments
echo $this->getPartial(
"shared/footer",
[
    "content" => $html,
]
);
```

<h4 id="mvcview-getpartialsdir"><code>getPartialsDir()</code></h4>

```php
public function getPartialsDir(): string;
```

Gets the current partials sub-directory

<h4 id="mvcview-getrender"><code>getRender()</code></h4>

```php
public function getRender(
string $controllerName,
string $actionName,
array $params = [],
mixed $configCallback = null
): string;
```

Perform the automatic rendering returning the output as a string

```php
$template = $this->view->getRender(
"products",
"show",
[
    "products" => $products,
]
);
```

<h4 id="mvcview-getrenderlevel"><code>getRenderLevel()</code></h4>

```php
public function getRenderLevel(): int;
```

<h4 id="mvcview-getviewsdir"><code>getViewsDir()</code></h4>

```php
public function getViewsDir(): string|array;
```

Gets views directory

<h4 id="mvcview-has"><code>has()</code></h4>

```php
public function has( string $view ): bool;
```

Checks whether view exists

<h4 id="mvcview-isdisabled"><code>isDisabled()</code></h4>

```php
public function isDisabled(): bool;
```

Whether automatic rendering is enabled

<h4 id="mvcview-partial"><code>partial()</code></h4>

```php
public function partial(
string $partialPath,
mixed $params = null
);
```

Renders a partial view

```php
// Show a partial inside another view
$this->partial("shared/footer");
```

```php
// Show a partial inside another view with parameters
$this->partial(
"shared/footer",
[
    "content" => $html,
]
);
```

<h4 id="mvcview-pick"><code>pick()</code></h4>

```php
public function pick( mixed $renderView ): static;
```

Choose a different view to render instead of last-controller/last-action

```php
use Phalcon\Mvc\Controller;

class ProductsController extends Controller
{
public function saveAction()
{
    // Do some save stuff...

    // Then show the list view
    $this->view->pick("products/list");
}
}
```

<h4 id="mvcview-processrender"><code>processRender()</code></h4>

```php
public function processRender(
string $controllerName,
string $actionName,
array $params = [],
bool $fireEvents = true
): bool;
```

Processes the view and templates; Fires events if needed

<h4 id="mvcview-registerengines"><code>registerEngines()</code></h4>

```php
public function registerEngines( array $engines ): static;
```

Register templating engines

```php
$this->view->registerEngines(
[
    ".phtml" => \Phalcon\Mvc\View\Engine\Php::class,
    ".volt"  => \Phalcon\Mvc\View\Engine\Volt::class,
    ".mhtml" => \MyCustomEngine::class,
]
);
```

<h4 id="mvcview-render"><code>render()</code></h4>

```php
public function render(
string $controllerName,
string $actionName,
array $params = []
): static|false;
```

Executes render process from dispatching data

```php
// Shows recent posts view (app/views/posts/recent.phtml)
$view->start()->render("posts", "recent")->finish();
```

<h4 id="mvcview-reset"><code>reset()</code></h4>

```php
public function reset(): static;
```

Resets the view component to its factory default values

<h4 id="mvcview-setbasepath"><code>setBasePath()</code></h4>

```php
public function setBasePath( string $basePath ): static;
```

Sets base path. Depending of your platform, always add a trailing slash
or backslash

```php
$view->setBasePath(__DIR__ . "/");
```

<h4 id="mvcview-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( ManagerInterface $eventsManager ): void;
```

Sets the events manager

<h4 id="mvcview-setlayout"><code>setLayout()</code></h4>

```php
public function setLayout( string $layout ): static;
```

Change the layout to be used instead of using the name of the latest
controller name

```php
$this->view->setLayout("main");
```

<h4 id="mvcview-setlayoutsdir"><code>setLayoutsDir()</code></h4>

```php
public function setLayoutsDir( string $layoutsDir ): static;
```

Sets the layouts sub-directory. Must be a directory under the views
directory. Depending of your platform, always add a trailing slash or
backslash

```php
$view->setLayoutsDir("../common/layouts/");
```

<h4 id="mvcview-setmainview"><code>setMainView()</code></h4>

```php
public function setMainView( string $viewPath ): static;
```

Sets default view name. Must be a file without extension in the views
directory

```php
// Renders as main view views-dir/base.phtml
$this->view->setMainView("base");
```

<h4 id="mvcview-setparamtoview"><code>setParamToView()</code></h4>

```php
public function setParamToView(
string $key,
mixed $value
): static;
```

Adds parameters to views (alias of setVar)

```php
$this->view->setParamToView("products", $products);
```

<h4 id="mvcview-setpartialsdir"><code>setPartialsDir()</code></h4>

```php
public function setPartialsDir( string $partialsDir ): static;
```

Sets a partials sub-directory. Must be a directory under the views
directory. Depending of your platform, always add a trailing slash or
backslash

```php
$view->setPartialsDir("../common/partials/");
```

<h4 id="mvcview-setrenderlevel"><code>setRenderLevel()</code></h4>

```php
public function setRenderLevel( int $level ): static;
```

Sets the render level for the view

```php
// Render the view related to the controller only
$this->view->setRenderLevel(
View::LEVEL_LAYOUT
);
```

<h4 id="mvcview-settemplateafter"><code>setTemplateAfter()</code></h4>

```php
public function setTemplateAfter( mixed $templateAfter ): static;
```

Sets a "template after" controller layout

<h4 id="mvcview-settemplatebefore"><code>setTemplateBefore()</code></h4>

```php
public function setTemplateBefore( mixed $templateBefore ): static;
```

Sets a template before the controller layout

<h4 id="mvcview-setvars"><code>setVars()</code></h4>

```php
public function setVars(
array $params,
bool $merge = true
): static;
```

Set all the render params

```php
$this->view->setVars(
[
    "products" => $products,
]
);
```

<h4 id="mvcview-setviewsdir"><code>setViewsDir()</code></h4>

```php
public function setViewsDir( mixed $viewsDir ): static;
```

Sets the views directory. Depending of your platform,
always add a trailing slash or backslash

<h4 id="mvcview-start"><code>start()</code></h4>

```php
public function start(): static;
```

Starts rendering process enabling the output buffering

<h4 id="mvcview-tostring"><code>toString()</code></h4>

```php
public function toString(
string $controllerName,
string $actionName,
array $params = []
): string;
```

Renders the view and returns it as a string

<div class="api-group">Protected · 4</div>

<h4 id="mvcview-enginerender"><code>engineRender()</code></h4>

```php
protected function engineRender(
array $engines,
string $viewPath,
bool $silence,
bool $mustClean = true
);
```

Checks whether view exists on registered extensions and render it

<h4 id="mvcview-getviewsdirs"><code>getViewsDirs()</code></h4>

```php
protected function getViewsDirs(): array;
```

Gets views directories

<h4 id="mvcview-isabsolutepath"><code>isAbsolutePath()</code></h4>

```php
final protected function isAbsolutePath( string $path );
```

Checks if a path is absolute or not

<h4 id="mvcview-loadtemplateengines"><code>loadTemplateEngines()</code></h4>

```php
protected function loadTemplateEngines(): array;
```

Loads registered template engines, if none is registered it will use
Phalcon\Mvc\View\Engine\Php

## Mvc\ViewBaseInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/ViewBaseInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\View and Phalcon\Mvc\View\Simple

<div class="api-tree">

- **`Phalcon\Mvc\ViewBaseInterface`**
- [`Phalcon\Mvc\ViewInterface`](#mvcviewinterface)

</div>

__Uses__ `Phalcon\Cache\Adapter\AdapterInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewbaseinterface-getcontent">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getContent</span>()</code>
<span class="desc">Returns cached output from another view stage</span>
</a>
<a class="api-item" href="#mvcviewbaseinterface-getparamstoview">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getParamsToView</span>()</code>
<span class="desc">Returns parameters to views</span>
</a>
<a class="api-item" href="#mvcviewbaseinterface-getviewsdir">
<code class="vis vis-public">public</code>
<code class="ret">string|array</code>
<code class="sig"><span class="sf">getViewsDir</span>()</code>
<span class="desc">Gets views directory</span>
</a>
<a class="api-item" href="#mvcviewbaseinterface-partial">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">partial</span>(<span class="prm"><span class="st">string</span> <span class="sv">$partialPath</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Renders a partial view</span>
</a>
<a class="api-item" href="#mvcviewbaseinterface-setcontent">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setContent</span>( <span class="st">string</span> <span class="sv">$content</span> )</code>
<span class="desc">Externally sets the view content</span>
</a>
<a class="api-item" href="#mvcviewbaseinterface-setparamtoview">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setParamToView</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Adds parameters to views (alias of setVar)</span>
</a>
<a class="api-item" href="#mvcviewbaseinterface-setvar">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setVar</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Adds parameters to views</span>
</a>
<a class="api-item" href="#mvcviewbaseinterface-setviewsdir">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setViewsDir</span>( <span class="st">string</span> <span class="sv">$viewsDir</span> )</code>
<span class="desc">Sets views directory. Depending of your platform, always add a trailing</span>
</a>
</div>

### Methods

<div class="api-group">Public · 8</div>

<h4 id="mvcviewbaseinterface-getcontent"><code>getContent()</code></h4>

```php
public function getContent(): string;
```

Returns cached output from another view stage

<h4 id="mvcviewbaseinterface-getparamstoview"><code>getParamsToView()</code></h4>

```php
public function getParamsToView(): array;
```

Returns parameters to views

<h4 id="mvcviewbaseinterface-getviewsdir"><code>getViewsDir()</code></h4>

```php
public function getViewsDir(): string|array;
```

Gets views directory

<h4 id="mvcviewbaseinterface-partial"><code>partial()</code></h4>

```php
public function partial(
string $partialPath,
mixed $params = null
);
```

Renders a partial view

<h4 id="mvcviewbaseinterface-setcontent"><code>setContent()</code></h4>

```php
public function setContent( string $content );
```

Externally sets the view content

<h4 id="mvcviewbaseinterface-setparamtoview"><code>setParamToView()</code></h4>

```php
public function setParamToView(
string $key,
mixed $value
);
```

Adds parameters to views (alias of setVar)

<h4 id="mvcviewbaseinterface-setvar"><code>setVar()</code></h4>

```php
public function setVar(
string $key,
mixed $value
);
```

Adds parameters to views

<h4 id="mvcviewbaseinterface-setviewsdir"><code>setViewsDir()</code></h4>

```php
public function setViewsDir( string $viewsDir );
```

Sets views directory. Depending of your platform, always add a trailing
slash or backslash

## Mvc\ViewInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/ViewInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\View

<div class="api-tree">

- [`Phalcon\Mvc\ViewBaseInterface`](#mvcviewbaseinterface)
- **`Phalcon\Mvc\ViewInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewinterface-cleantemplateafter">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">cleanTemplateAfter</span>()</code>
<span class="desc">Resets any template before layouts</span>
</a>
<a class="api-item" href="#mvcviewinterface-cleantemplatebefore">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">cleanTemplateBefore</span>()</code>
<span class="desc">Resets any template before layouts</span>
</a>
<a class="api-item" href="#mvcviewinterface-disable">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">disable</span>()</code>
<span class="desc">Disables the auto-rendering process</span>
</a>
<a class="api-item" href="#mvcviewinterface-enable">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">enable</span>()</code>
<span class="desc">Enables the auto-rendering process</span>
</a>
<a class="api-item" href="#mvcviewinterface-finish">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">finish</span>()</code>
<span class="desc">Finishes the render process by stopping the output buffering</span>
</a>
<a class="api-item" href="#mvcviewinterface-getactionname">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActionName</span>()</code>
<span class="desc">Gets the name of the action rendered</span>
</a>
<a class="api-item" href="#mvcviewinterface-getactiverenderpath">
<code class="vis vis-public">public</code>
<code class="ret">string|array</code>
<code class="sig"><span class="sf">getActiveRenderPath</span>()</code>
<span class="desc">Returns the path of the view that is currently rendered</span>
</a>
<a class="api-item" href="#mvcviewinterface-getbasepath">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getBasePath</span>()</code>
<span class="desc">Gets base path</span>
</a>
<a class="api-item" href="#mvcviewinterface-getcontrollername">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getControllerName</span>()</code>
<span class="desc">Gets the name of the controller rendered</span>
</a>
<a class="api-item" href="#mvcviewinterface-getlayout">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getLayout</span>()</code>
<span class="desc">Returns the name of the main view</span>
</a>
<a class="api-item" href="#mvcviewinterface-getlayoutsdir">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getLayoutsDir</span>()</code>
<span class="desc">Gets the current layouts sub-directory</span>
</a>
<a class="api-item" href="#mvcviewinterface-getmainview">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getMainView</span>()</code>
<span class="desc">Returns the name of the main view</span>
</a>
<a class="api-item" href="#mvcviewinterface-getpartialsdir">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getPartialsDir</span>()</code>
<span class="desc">Gets the current partials sub-directory</span>
</a>
<a class="api-item" href="#mvcviewinterface-isdisabled">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isDisabled</span>()</code>
<span class="desc">Whether the automatic rendering is disabled</span>
</a>
<a class="api-item" href="#mvcviewinterface-pick">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">pick</span>( <span class="st">string</span> <span class="sv">$renderView</span> )</code>
<span class="desc">Choose a view different to render than last-controller/last-action</span>
</a>
<a class="api-item" href="#mvcviewinterface-registerengines">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">registerEngines</span>( <span class="st">array</span> <span class="sv">$engines</span> )</code>
<span class="desc">Register templating engines</span>
</a>
<a class="api-item" href="#mvcviewinterface-render">
<code class="vis vis-public">public</code>
<code class="ret">ViewInterface|bool</code>
<code class="sig"><span class="sf">render</span>(<span class="prm"><span class="st">string</span> <span class="sv">$controllerName</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$actionName</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Executes render process from dispatching data</span>
</a>
<a class="api-item" href="#mvcviewinterface-reset">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">reset</span>()</code>
<span class="desc">Resets the view component to its factory default values</span>
</a>
<a class="api-item" href="#mvcviewinterface-setbasepath">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setBasePath</span>( <span class="st">string</span> <span class="sv">$basePath</span> )</code>
<span class="desc">Sets base path. Depending of your platform, always add a trailing slash</span>
</a>
<a class="api-item" href="#mvcviewinterface-setlayout">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setLayout</span>( <span class="st">string</span> <span class="sv">$layout</span> )</code>
<span class="desc">Change the layout to be used instead of using the name of the latest</span>
</a>
<a class="api-item" href="#mvcviewinterface-setlayoutsdir">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setLayoutsDir</span>( <span class="st">string</span> <span class="sv">$layoutsDir</span> )</code>
<span class="desc">Sets the layouts sub-directory. Must be a directory under the views</span>
</a>
<a class="api-item" href="#mvcviewinterface-setmainview">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setMainView</span>( <span class="st">string</span> <span class="sv">$viewPath</span> )</code>
<span class="desc">Sets default view name. Must be a file without extension in the views</span>
</a>
<a class="api-item" href="#mvcviewinterface-setpartialsdir">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setPartialsDir</span>( <span class="st">string</span> <span class="sv">$partialsDir</span> )</code>
<span class="desc">Sets a partials sub-directory. Must be a directory under the views</span>
</a>
<a class="api-item" href="#mvcviewinterface-setrenderlevel">
<code class="vis vis-public">public</code>
<code class="ret">ViewInterface</code>
<code class="sig"><span class="sf">setRenderLevel</span>( <span class="st">int</span> <span class="sv">$level</span> )</code>
<span class="desc">Sets the render level for the view</span>
</a>
<a class="api-item" href="#mvcviewinterface-settemplateafter">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setTemplateAfter</span>( <span class="st">mixed</span> <span class="sv">$templateAfter</span> )</code>
<span class="desc">Appends template after controller layout</span>
</a>
<a class="api-item" href="#mvcviewinterface-settemplatebefore">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setTemplateBefore</span>( <span class="st">mixed</span> <span class="sv">$templateBefore</span> )</code>
<span class="desc">Appends template before controller layout</span>
</a>
<a class="api-item" href="#mvcviewinterface-start">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">start</span>()</code>
<span class="desc">Starts rendering process enabling the output buffering</span>
</a>
</div>

### Methods

<div class="api-group">Public · 27</div>

<h4 id="mvcviewinterface-cleantemplateafter"><code>cleanTemplateAfter()</code></h4>

```php
public function cleanTemplateAfter();
```

Resets any template before layouts

<h4 id="mvcviewinterface-cleantemplatebefore"><code>cleanTemplateBefore()</code></h4>

```php
public function cleanTemplateBefore();
```

Resets any template before layouts

<h4 id="mvcviewinterface-disable"><code>disable()</code></h4>

```php
public function disable();
```

Disables the auto-rendering process

<h4 id="mvcviewinterface-enable"><code>enable()</code></h4>

```php
public function enable();
```

Enables the auto-rendering process

<h4 id="mvcviewinterface-finish"><code>finish()</code></h4>

```php
public function finish();
```

Finishes the render process by stopping the output buffering

<h4 id="mvcviewinterface-getactionname"><code>getActionName()</code></h4>

```php
public function getActionName(): string;
```

Gets the name of the action rendered

<h4 id="mvcviewinterface-getactiverenderpath"><code>getActiveRenderPath()</code></h4>

```php
public function getActiveRenderPath(): string|array;
```

Returns the path of the view that is currently rendered

<h4 id="mvcviewinterface-getbasepath"><code>getBasePath()</code></h4>

```php
public function getBasePath(): string;
```

Gets base path

<h4 id="mvcviewinterface-getcontrollername"><code>getControllerName()</code></h4>

```php
public function getControllerName(): string;
```

Gets the name of the controller rendered

<h4 id="mvcviewinterface-getlayout"><code>getLayout()</code></h4>

```php
public function getLayout(): string|null;
```

Returns the name of the main view

<h4 id="mvcviewinterface-getlayoutsdir"><code>getLayoutsDir()</code></h4>

```php
public function getLayoutsDir(): string;
```

Gets the current layouts sub-directory

<h4 id="mvcviewinterface-getmainview"><code>getMainView()</code></h4>

```php
public function getMainView(): string;
```

Returns the name of the main view

<h4 id="mvcviewinterface-getpartialsdir"><code>getPartialsDir()</code></h4>

```php
public function getPartialsDir(): string;
```

Gets the current partials sub-directory

<h4 id="mvcviewinterface-isdisabled"><code>isDisabled()</code></h4>

```php
public function isDisabled(): bool;
```

Whether the automatic rendering is disabled

<h4 id="mvcviewinterface-pick"><code>pick()</code></h4>

```php
public function pick( string $renderView );
```

Choose a view different to render than last-controller/last-action

<h4 id="mvcviewinterface-registerengines"><code>registerEngines()</code></h4>

```php
public function registerEngines( array $engines );
```

Register templating engines

<h4 id="mvcviewinterface-render"><code>render()</code></h4>

```php
public function render(
string $controllerName,
string $actionName,
array $params = []
): ViewInterface|bool;
```

Executes render process from dispatching data

<h4 id="mvcviewinterface-reset"><code>reset()</code></h4>

```php
public function reset();
```

Resets the view component to its factory default values

<h4 id="mvcviewinterface-setbasepath"><code>setBasePath()</code></h4>

```php
public function setBasePath( string $basePath );
```

Sets base path. Depending of your platform, always add a trailing slash
or backslash

<h4 id="mvcviewinterface-setlayout"><code>setLayout()</code></h4>

```php
public function setLayout( string $layout );
```

Change the layout to be used instead of using the name of the latest
controller name

<h4 id="mvcviewinterface-setlayoutsdir"><code>setLayoutsDir()</code></h4>

```php
public function setLayoutsDir( string $layoutsDir );
```

Sets the layouts sub-directory. Must be a directory under the views
directory. Depending of your platform, always add a trailing slash or
backslash

<h4 id="mvcviewinterface-setmainview"><code>setMainView()</code></h4>

```php
public function setMainView( string $viewPath );
```

Sets default view name. Must be a file without extension in the views
directory

<h4 id="mvcviewinterface-setpartialsdir"><code>setPartialsDir()</code></h4>

```php
public function setPartialsDir( string $partialsDir );
```

Sets a partials sub-directory. Must be a directory under the views
directory. Depending of your platform, always add a trailing slash or
backslash

<h4 id="mvcviewinterface-setrenderlevel"><code>setRenderLevel()</code></h4>

```php
public function setRenderLevel( int $level ): ViewInterface;
```

Sets the render level for the view

<h4 id="mvcviewinterface-settemplateafter"><code>setTemplateAfter()</code></h4>

```php
public function setTemplateAfter( mixed $templateAfter );
```

Appends template after controller layout

<h4 id="mvcviewinterface-settemplatebefore"><code>setTemplateBefore()</code></h4>

```php
public function setTemplateBefore( mixed $templateBefore );
```

Appends template before controller layout

<h4 id="mvcviewinterface-start"><code>start()</code></h4>

```php
public function start();
```

Starts rendering process enabling the output buffering

## Mvc\View\Engine\AbstractEngine

<span class="badge badge--abstract">Abstract</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/AbstractEngine.zep">Source on GitHub</a>

All the template engine adapters must inherit this class. This provides
basic interfacing between the engine and the Phalcon\Mvc\View component.

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- **`Phalcon\Mvc\View\Engine\AbstractEngine`** - implements [`Phalcon\Mvc\View\Engine\EngineInterface`](#mvcviewengineengineinterface), [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface)
- [`Phalcon\Mvc\View\Engine\Php`](#mvcviewenginephp)
- [`Phalcon\Mvc\View\Engine\Volt`](#mvcviewenginevolt)

</div>

__Uses__ `Phalcon\Di\DiInterface` · `Phalcon\Di\Injectable` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Mvc\ViewBaseInterface`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewengineabstractengine-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">ViewBaseInterface</span> <span class="sv">$view</span>,</span><span class="prm"><span class="st">DiInterface|null</span> <span class="sv">$container</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Phalcon\Mvc\View\Engine constructor</span>
</a>
<a class="api-item" href="#mvcviewengineabstractengine-getcontent">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getContent</span>()</code>
<span class="desc">Returns cached output on another view stage</span>
</a>
<a class="api-item" href="#mvcviewengineabstractengine-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvcviewengineabstractengine-getview">
<code class="vis vis-public">public</code>
<code class="ret">ViewBaseInterface</code>
<code class="sig"><span class="sf">getView</span>()</code>
<span class="desc">Returns the view component related to the adapter</span>
</a>
<a class="api-item" href="#mvcviewengineabstractengine-partial">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">partial</span>(<span class="prm"><span class="st">string</span> <span class="sv">$partialPath</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Renders a partial inside another view</span>
</a>
<a class="api-item" href="#mvcviewengineabstractengine-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets the events manager</span>
</a>
<a class="api-item" href="#mvcviewengineabstractengine-firemanagerevent">
<code class="vis vis-protected">protected</code>
<code class="ret">mixed|bool</code>
<code class="sig"><span class="sf">fireManagerEvent</span>(<span class="prm"><span class="st">string</span> <span class="sv">$eventName</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$data</span><span class="sm"> = null</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$cancellable</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Helper method to fire an event</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$eventsManager</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ViewBaseInterface</code>
<code class="sig"><span class="sv">$view</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 6</div>

<h4 id="mvcviewengineabstractengine-__construct"><code>__construct()</code></h4>

```php
public function __construct(
ViewBaseInterface $view,
DiInterface|null $container = null
);
```

Phalcon\Mvc\View\Engine constructor

<h4 id="mvcviewengineabstractengine-getcontent"><code>getContent()</code></h4>

```php
public function getContent(): string;
```

Returns cached output on another view stage

<h4 id="mvcviewengineabstractengine-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): ManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvcviewengineabstractengine-getview"><code>getView()</code></h4>

```php
public function getView(): ViewBaseInterface;
```

Returns the view component related to the adapter

<h4 id="mvcviewengineabstractengine-partial"><code>partial()</code></h4>

```php
public function partial(
string $partialPath,
mixed $params = null
): void;
```

Renders a partial inside another view

<h4 id="mvcviewengineabstractengine-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( ManagerInterface $eventsManager ): void;
```

Sets the events manager

<div class="api-group">Protected · 1</div>

<h4 id="mvcviewengineabstractengine-firemanagerevent"><code>fireManagerEvent()</code></h4>

```php
protected function fireManagerEvent(
string $eventName,
mixed $data = null,
bool $cancellable = true
): mixed|bool;
```

Helper method to fire an event

## Mvc\View\Engine\EngineInterface

<span class="badge badge--interface">Interface</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/EngineInterface.zep">Source on GitHub</a>

Interface for Phalcon\Mvc\View engine adapters

<div class="api-tree">

- **`Phalcon\Mvc\View\Engine\EngineInterface`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewengineengineinterface-getcontent">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getContent</span>()</code>
<span class="desc">Returns cached output on another view stage</span>
</a>
<a class="api-item" href="#mvcviewengineengineinterface-partial">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">partial</span>(<span class="prm"><span class="st">string</span> <span class="sv">$partialPath</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Renders a partial inside another view</span>
</a>
<a class="api-item" href="#mvcviewengineengineinterface-render">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">render</span>(<span class="prm"><span class="st">string</span> <span class="sv">$path</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$mustClean</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Renders a view using the template engine</span>
</a>
</div>

### Methods

<div class="api-group">Public · 3</div>

<h4 id="mvcviewengineengineinterface-getcontent"><code>getContent()</code></h4>

```php
public function getContent(): string;
```

Returns cached output on another view stage

<h4 id="mvcviewengineengineinterface-partial"><code>partial()</code></h4>

```php
public function partial(
string $partialPath,
mixed $params = null
): void;
```

Renders a partial inside another view

<h4 id="mvcviewengineengineinterface-render"><code>render()</code></h4>

```php
public function render(
string $path,
mixed $params,
bool $mustClean = false
);
```

Renders a view using the template engine

TODO: Change params to array type

## Mvc\View\Engine\Php

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Php.zep">Source on GitHub</a>

Adapter to use PHP itself as templating engine

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- [`Phalcon\Mvc\View\Engine\AbstractEngine`](#mvcviewengineabstractengine)
- **`Phalcon\Mvc\View\Engine\Php`**

</div>

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginephp-render">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">render</span>(<span class="prm"><span class="st">string</span> <span class="sv">$path</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$mustClean</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Renders a view using the template engine</span>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginephp-render"><code>render()</code></h4>

```php
public function render(
string $path,
mixed $params,
bool $mustClean = false
);
```

Renders a view using the template engine

## Mvc\View\Engine\Volt

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt.zep">Source on GitHub</a>

Designer friendly and fast template engine for PHP written in Zephir/C

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- [`Phalcon\Mvc\View\Engine\AbstractEngine`](#mvcviewengineabstractengine)
- **`Phalcon\Mvc\View\Engine\Volt`** - implements [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface)

</div>

__Uses__ `Phalcon\Di\DiInterface` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Html\Link\Link` · `Phalcon\Html\Link\Serializer\Header` · `Phalcon\Mvc\View\Engine\Volt\Compiler` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidHaystack` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\MacroNotFound` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\MbstringRequired` · `Phalcon\Mvc\View\Exception` · `Phalcon\Traits\Php\InfoTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevolt-callmacro">
<code class="vis vis-public">public</code>
<code class="ret">mixed</code>
<code class="sig"><span class="sf">callMacro</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Checks if a macro is defined and calls it</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-convertencoding">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">convertEncoding</span>(<span class="prm"><span class="st">string</span> <span class="sv">$text</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$from</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$to</span></span>)</code>
<span class="desc">Performs a string conversion</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-getcompiler">
<code class="vis vis-public">public</code>
<code class="ret">Compiler</code>
<code class="sig"><span class="sf">getCompiler</span>()</code>
<span class="desc">Returns the Volt&#039;s compiler</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-getoptions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOptions</span>()</code>
<span class="desc">Return Volt&#039;s options</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-isincluded">
<code class="vis vis-public">public</code>
<code class="ret">bool</code>
<code class="sig"><span class="sf">isIncluded</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$needle</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$haystack</span></span>)</code>
<span class="desc">Checks if the needle is included in the haystack</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-length">
<code class="vis vis-public">public</code>
<code class="ret">int</code>
<code class="sig"><span class="sf">length</span>( <span class="st">mixed</span> <span class="sv">$item</span> )</code>
<span class="desc">Length filter. If an array/object is passed a count is performed otherwise a strlen/mb_strlen</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-preload">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">preload</span>( <span class="st">mixed</span> <span class="sv">$parameters</span> )</code>
<span class="desc">Parses the preload element passed and sets the necessary link headers</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-render">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">render</span>(<span class="prm"><span class="st">string</span> <span class="sv">$path</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$mustClean</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Renders a view using the template engine</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets the events manager</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-setoptions">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">setOptions</span>( <span class="st">array</span> <span class="sv">$options</span> )</code>
<span class="desc">Set Volt&#039;s options</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-slice">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">slice</span>(<span class="prm"><span class="st">mixed</span> <span class="sv">$value</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$start</span><span class="sm"> = 0</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$end</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Extracts a slice from a string/array/traversable object value</span>
</a>
<a class="api-item" href="#mvcviewenginevolt-sort">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">sort</span>( <span class="st">array</span> <span class="sv">$value</span> )</code>
<span class="desc">Sorts an array</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">Compiler</code>
<code class="sig"><span class="sv">$compiler</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$eventsManager</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$macros</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$options</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 13</div>

<h4 id="mvcviewenginevolt-callmacro"><code>callMacro()</code></h4>

```php
public function callMacro(
string $name,
array $arguments = []
): mixed;
```

Checks if a macro is defined and calls it

@params string name
@params array arguments

<h4 id="mvcviewenginevolt-convertencoding"><code>convertEncoding()</code></h4>

```php
public function convertEncoding(
string $text,
string $from,
string $to
): string;
```

Performs a string conversion

<h4 id="mvcviewenginevolt-getcompiler"><code>getCompiler()</code></h4>

```php
public function getCompiler(): Compiler;
```

Returns the Volt's compiler

<h4 id="mvcviewenginevolt-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): ManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvcviewenginevolt-getoptions"><code>getOptions()</code></h4>

```php
public function getOptions(): array;
```

Return Volt's options

<h4 id="mvcviewenginevolt-isincluded"><code>isIncluded()</code></h4>

```php
public function isIncluded(
mixed $needle,
mixed $haystack
): bool;
```

Checks if the needle is included in the haystack

<h4 id="mvcviewenginevolt-length"><code>length()</code></h4>

```php
public function length( mixed $item ): int;
```

Length filter. If an array/object is passed a count is performed otherwise a strlen/mb_strlen

<h4 id="mvcviewenginevolt-preload"><code>preload()</code></h4>

```php
public function preload( mixed $parameters ): string;
```

Parses the preload element passed and sets the necessary link headers
@todo find a better way to handle this

<h4 id="mvcviewenginevolt-render"><code>render()</code></h4>

```php
public function render(
string $path,
mixed $params,
bool $mustClean = false
);
```

Renders a view using the template engine

<h4 id="mvcviewenginevolt-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( ManagerInterface $eventsManager ): void;
```

Sets the events manager

<h4 id="mvcviewenginevolt-setoptions"><code>setOptions()</code></h4>

```php
public function setOptions( array $options );
```

Set Volt's options

<h4 id="mvcviewenginevolt-slice"><code>slice()</code></h4>

```php
public function slice(
mixed $value,
int $start = 0,
mixed $end = null
);
```

Extracts a slice from a string/array/traversable object value

<h4 id="mvcviewenginevolt-sort"><code>sort()</code></h4>

```php
public function sort( array $value ): array;
```

Sorts an array

## Mvc\View\Engine\Volt\Compiler

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Compiler.zep">Source on GitHub</a>

This class reads and compiles Volt templates into PHP plain code

```php
$compiler = new \Phalcon\Mvc\View\Engine\Volt\Compiler();

$compiler->compile("views/partials/header.volt");

require $compiler->getCompiledTemplatePath();
```

<div class="api-tree">

- **`Phalcon\Mvc\View\Engine\Volt\Compiler`** - implements [`Phalcon\Di\InjectionAwareInterface`](/5.19/api/phalcon_di/#diinjectionawareinterface)

</div>

__Uses__ `Closure` · `Phalcon\Di\DiInterface` · `Phalcon\Di\InjectionAwareInterface` · `Phalcon\Mvc\ViewBaseInterface` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\CannotOpenCompiledFile` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\CorruptedStatement` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\CorruptedStatementWithData` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidCompilationPrefix` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidExtension` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidIntermediateRepresentation` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidOptionType` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidPathClosureReturn` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidPathType` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidStatement` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidUserFilterDefinition` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidUserFunctionDefinition` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\MacroAlreadyDefined` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplateFileNotFound` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplateFileNotOpenable` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplatePathCollision` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltExpression` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilter` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilterType` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltStatement` · `Phalcon\Mvc\View\Engine\Volt\Exceptions\VoltDirectoryNotWritable` · `Phalcon\Tag` · `Phalcon\Traits\Php\FileTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltcompiler-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">ViewBaseInterface|null</span> <span class="sv">$view</span><span class="sm"> = null</span> )</code>
<span class="desc">Phalcon\Mvc\View\Engine\Volt\Compiler</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-addextension">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">addExtension</span>( <span class="st">mixed</span> <span class="sv">$extension</span> )</code>
<span class="desc">Registers a Volt&#039;s extension</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-addfilter">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">addFilter</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$definition</span></span>)</code>
<span class="desc">Register a new filter in the compiler</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-addfunction">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">addFunction</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$definition</span></span>)</code>
<span class="desc">Register a new function in the compiler</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-attributereader">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">attributeReader</span>( <span class="st">array</span> <span class="sv">$expr</span> )</code>
<span class="desc">Resolves attribute reading</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compile">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">compile</span>(<span class="prm"><span class="st">string</span> <span class="sv">$templatePath</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Compiles a template into a file applying the compiler options</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileautoescape">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileAutoEscape</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statement</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span></span>)</code>
<span class="desc">Compiles a &quot;autoescape&quot; statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compilecall">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileCall</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statement</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span></span>)</code>
<span class="desc">Compiles calls to macros</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compilecase">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileCase</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statement</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$caseClause</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Compiles a &quot;case&quot;/&quot;default&quot; clause returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compiledo">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileDo</span>( <span class="st">array</span> <span class="sv">$statement</span> )</code>
<span class="desc">Compiles a &quot;do&quot; statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileecho">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileEcho</span>( <span class="st">array</span> <span class="sv">$statement</span> )</code>
<span class="desc">Compiles a <code>\{\{</code> <code>\}\}</code> statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileelseif">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileElseIf</span>( <span class="st">array</span> <span class="sv">$statement</span> )</code>
<span class="desc">Compiles a &quot;elseif&quot; statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compilefile">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">compileFile</span>(<span class="prm"><span class="st">string</span> <span class="sv">$path</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$compiledPath</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Compiles a template into a file forcing the destination path</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileforelse">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileForElse</span>()</code>
<span class="desc">Generates a &#039;forelse&#039; PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileforeach">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileForeach</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statement</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Compiles a &quot;foreach&quot; intermediate code representation into plain PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileif">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileIf</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statement</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Compiles a &#039;if&#039; statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileinclude">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileInclude</span>( <span class="st">array</span> <span class="sv">$statement</span> )</code>
<span class="desc">Compiles a &#039;include&#039; statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compilemacro">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileMacro</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statement</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span></span>)</code>
<span class="desc">Compiles macros</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compilereturn">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileReturn</span>( <span class="st">array</span> <span class="sv">$statement</span> )</code>
<span class="desc">Compiles a &quot;return&quot; statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileset">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileSet</span>( <span class="st">array</span> <span class="sv">$statement</span> )</code>
<span class="desc">Compiles a &quot;set&quot; statement returning PHP code. The method accepts an</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compilestring">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileString</span>(<span class="prm"><span class="st">string</span> <span class="sv">$viewCode</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Compiles a template into a string</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compileswitch">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">compileSwitch</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statement</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Compiles a &#039;switch&#039; statement returning PHP code</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-expression">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">expression</span>(<span class="prm"><span class="st">array</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$doubleQuotes</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Resolves an expression node in an AST volt tree</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-fireextensionevent">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">fireExtensionEvent</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$arguments</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Fires an event to registered extensions</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-functioncall">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">functionCall</span>(<span class="prm"><span class="st">array</span> <span class="sv">$expr</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$doubleQuotes</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Resolves function intermediate code into PHP function calls</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getcompiledtemplatepath">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getCompiledTemplatePath</span>()</code>
<span class="desc">Returns the path to the last compiled template</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getdi">
<code class="vis vis-public">public</code>
<code class="ret">DiInterface</code>
<code class="sig"><span class="sf">getDI</span>()</code>
<span class="desc">Returns the internal dependency injector</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getextensions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getExtensions</span>()</code>
<span class="desc">Returns the list of extensions registered in Volt</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getfilters">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getFilters</span>()</code>
<span class="desc">Register the user registered filters</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getfunctions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getFunctions</span>()</code>
<span class="desc">Register the user registered functions</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getoption">
<code class="vis vis-public">public</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sf">getOption</span>( <span class="st">string</span> <span class="sv">$option</span> )</code>
<span class="desc">Returns a compiler&#039;s option</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getoptions">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getOptions</span>()</code>
<span class="desc">Returns the compiler options</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-gettemplatepath">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getTemplatePath</span>()</code>
<span class="desc">Returns the path that is currently being compiled</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getuniqueprefix">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getUniquePrefix</span>()</code>
<span class="desc">Return a unique prefix to be used as prefix for compiled variables and</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-parse">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">parse</span>( <span class="st">string</span> <span class="sv">$viewCode</span> )</code>
<span class="desc">Parses a Volt template returning its intermediate representation</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-resolvetest">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">resolveTest</span>(<span class="prm"><span class="st">array</span> <span class="sv">$test</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$left</span></span>)</code>
<span class="desc">Resolves filter intermediate code into a valid PHP expression</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-setdi">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setDI</span>( <span class="st">DiInterface</span> <span class="sv">$container</span> )</code>
<span class="desc">Sets the dependency injector</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-setoption">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setOption</span>(<span class="prm"><span class="st">string</span> <span class="sv">$option</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Sets a single compiler option</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-setoptions">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setOptions</span>( <span class="st">array</span> <span class="sv">$options</span> )</code>
<span class="desc">Sets the compiler options</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-setuniqueprefix">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setUniquePrefix</span>( <span class="st">string</span> <span class="sv">$prefix</span> )</code>
<span class="desc">Set a unique prefix to be used as prefix for compiled variables</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-compilesource">
<code class="vis vis-protected">protected</code>
<code class="ret">array|string</code>
<code class="sig"><span class="sf">compileSource</span>(<span class="prm"><span class="st">string</span> <span class="sv">$viewCode</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Compiles a Volt source code returning a PHP plain version</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-getfinalpath">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">getFinalPath</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
<span class="desc">Gets the final path with VIEW</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-resolvefilter">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">resolveFilter</span>(<span class="prm"><span class="st">array</span> <span class="sv">$filter</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$left</span></span>)</code>
<span class="desc">Resolves filter intermediate code into PHP function calls</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-statementlist">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">statementList</span>(<span class="prm"><span class="st">array</span> <span class="sv">$statements</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$extendsMode</span><span class="sm"> = false</span></span>)</code>
<span class="desc">Traverses a statement list compiling each of its nodes</span>
</a>
<a class="api-item" href="#mvcviewenginevoltcompiler-statementlistorextends">
<code class="vis vis-protected">protected</code>
<code class="sig"><span class="sf">statementListOrExtends</span>( <span class="st">mixed</span> <span class="sv">$statements</span> )</code>
<span class="desc">Compiles a block of statements</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$autoescape</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$blockLevel</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|null</code>
<code class="sig"><span class="sv">$blocks</span></code>
<span class="desc">TODO: Make array only?</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$compiledTemplatePath</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">DiInterface|null</code>
<code class="sig"><span class="sv">$container</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$currentBlock</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string|null</code>
<code class="sig"><span class="sv">$currentPath</span><span class="sm"> = null</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$exprLevel</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">bool</code>
<code class="sig"><span class="sv">$extended</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array|bool</code>
<code class="sig"><span class="sv">$extendedBlocks</span></code>
<span class="desc">TODO: Make it always array</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$extensions</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$filters</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$forElsePointers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$foreachLevel</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$functions</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">int</code>
<code class="sig"><span class="sv">$level</span><span class="sm"> = 0</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$loopPointers</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$macros</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$options</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$prefix</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ViewBaseInterface|null</code>
<code class="sig"><span class="sv">$view</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 40</div>

<h4 id="mvcviewenginevoltcompiler-__construct"><code>__construct()</code></h4>

```php
public function __construct( ViewBaseInterface|null $view = null );
```

Phalcon\Mvc\View\Engine\Volt\Compiler

<h4 id="mvcviewenginevoltcompiler-addextension"><code>addExtension()</code></h4>

```php
public function addExtension( mixed $extension ): static;
```

Registers a Volt's extension

<h4 id="mvcviewenginevoltcompiler-addfilter"><code>addFilter()</code></h4>

```php
public function addFilter(
string $name,
mixed $definition
): static;
```

Register a new filter in the compiler

<h4 id="mvcviewenginevoltcompiler-addfunction"><code>addFunction()</code></h4>

```php
public function addFunction(
string $name,
mixed $definition
): static;
```

Register a new function in the compiler

<h4 id="mvcviewenginevoltcompiler-attributereader"><code>attributeReader()</code></h4>

```php
public function attributeReader( array $expr ): string;
```

Resolves attribute reading

<h4 id="mvcviewenginevoltcompiler-compile"><code>compile()</code></h4>

```php
public function compile(
string $templatePath,
bool $extendsMode = false
);
```

Compiles a template into a file applying the compiler options
This method does not return the compiled path if the template was not compiled

```php
$compiler->compile("views/layouts/main.volt");

require $compiler->getCompiledTemplatePath();
```

<h4 id="mvcviewenginevoltcompiler-compileautoescape"><code>compileAutoEscape()</code></h4>

```php
public function compileAutoEscape(
array $statement,
bool $extendsMode
): string;
```

Compiles a "autoescape" statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-compilecall"><code>compileCall()</code></h4>

```php
public function compileCall(
array $statement,
bool $extendsMode
): string;
```

Compiles calls to macros

<h4 id="mvcviewenginevoltcompiler-compilecase"><code>compileCase()</code></h4>

```php
public function compileCase(
array $statement,
bool $caseClause = true
): string;
```

Compiles a "case"/"default" clause returning PHP code

<h4 id="mvcviewenginevoltcompiler-compiledo"><code>compileDo()</code></h4>

```php
public function compileDo( array $statement ): string;
```

Compiles a "do" statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-compileecho"><code>compileEcho()</code></h4>

```php
public function compileEcho( array $statement ): string;
```

Compiles a `{{` `}}` statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-compileelseif"><code>compileElseIf()</code></h4>

```php
public function compileElseIf( array $statement ): string;
```

Compiles a "elseif" statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-compilefile"><code>compileFile()</code></h4>

```php
public function compileFile(
string $path,
string $compiledPath,
bool $extendsMode = false
);
```

Compiles a template into a file forcing the destination path

```php
$compiler->compileFile(
"views/layouts/main.volt",
"views/layouts/main.volt.php"
);
```

<h4 id="mvcviewenginevoltcompiler-compileforelse"><code>compileForElse()</code></h4>

```php
public function compileForElse(): string;
```

Generates a 'forelse' PHP code

<h4 id="mvcviewenginevoltcompiler-compileforeach"><code>compileForeach()</code></h4>

```php
public function compileForeach(
array $statement,
bool $extendsMode = false
): string;
```

Compiles a "foreach" intermediate code representation into plain PHP code

<h4 id="mvcviewenginevoltcompiler-compileif"><code>compileIf()</code></h4>

```php
public function compileIf(
array $statement,
bool $extendsMode = false
): string;
```

Compiles a 'if' statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-compileinclude"><code>compileInclude()</code></h4>

```php
public function compileInclude( array $statement ): string;
```

Compiles a 'include' statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-compilemacro"><code>compileMacro()</code></h4>

```php
public function compileMacro(
array $statement,
bool $extendsMode
): string;
```

Compiles macros

<h4 id="mvcviewenginevoltcompiler-compilereturn"><code>compileReturn()</code></h4>

```php
public function compileReturn( array $statement ): string;
```

Compiles a "return" statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-compileset"><code>compileSet()</code></h4>

```php
public function compileSet( array $statement ): string;
```

Compiles a "set" statement returning PHP code. The method accepts an
array produced by the Volt parser and creates the `set` statement in PHP.
This method is not particularly useful in development, since it requires
advanced knowledge of the Volt parser.

```php
<?php

use Phalcon\Mvc\View\Engine\Volt\Compiler;

$compiler = new Compiler();

// {% set a = ['first': 1] %}

$source = [
"type" => 306,
"assignments" => [
    [
        "variable" => [
            "type" => 265,
            "value" => "a",
            "file" => "eval code",
            "line" => 1
        ],
        "op" => 61,
        "expr" => [
            "type" => 360,
            "left" => [
                [
                    "expr" => [
                        "type" => 258,
                        "value" => "1",
                        "file" => "eval code",
                        "line" => 1
                    ],
                    "name" => "first",
                    "file" => "eval code",
                    "line" => 1
                ]
            ],
            "file" => "eval code",
            "line" => 1
        ],
        "file" => "eval code",
        "line" => 1
    ]
]
];

echo $compiler->compileSet($source);
// <?php $a = ['first' => 1]; ?>";
```

<h4 id="mvcviewenginevoltcompiler-compilestring"><code>compileString()</code></h4>

```php
public function compileString(
string $viewCode,
bool $extendsMode = false
): string;
```

Compiles a template into a string

```php
echo $compiler->compileString('{{ "hello world" }}');
```

<h4 id="mvcviewenginevoltcompiler-compileswitch"><code>compileSwitch()</code></h4>

```php
public function compileSwitch(
array $statement,
bool $extendsMode = false
): string;
```

Compiles a 'switch' statement returning PHP code

<h4 id="mvcviewenginevoltcompiler-expression"><code>expression()</code></h4>

```php
final public function expression(
array $expr,
bool $doubleQuotes = false
): string;
```

Resolves an expression node in an AST volt tree

<h4 id="mvcviewenginevoltcompiler-fireextensionevent"><code>fireExtensionEvent()</code></h4>

```php
final public function fireExtensionEvent(
string $name,
array $arguments = []
);
```

Fires an event to registered extensions

<h4 id="mvcviewenginevoltcompiler-functioncall"><code>functionCall()</code></h4>

```php
public function functionCall(
array $expr,
bool $doubleQuotes = false
): string;
```

Resolves function intermediate code into PHP function calls

<h4 id="mvcviewenginevoltcompiler-getcompiledtemplatepath"><code>getCompiledTemplatePath()</code></h4>

```php
public function getCompiledTemplatePath(): string;
```

Returns the path to the last compiled template

<h4 id="mvcviewenginevoltcompiler-getdi"><code>getDI()</code></h4>

```php
public function getDI(): DiInterface;
```

Returns the internal dependency injector

<h4 id="mvcviewenginevoltcompiler-getextensions"><code>getExtensions()</code></h4>

```php
public function getExtensions(): array;
```

Returns the list of extensions registered in Volt

<h4 id="mvcviewenginevoltcompiler-getfilters"><code>getFilters()</code></h4>

```php
public function getFilters(): array;
```

Register the user registered filters

<h4 id="mvcviewenginevoltcompiler-getfunctions"><code>getFunctions()</code></h4>

```php
public function getFunctions(): array;
```

Register the user registered functions

<h4 id="mvcviewenginevoltcompiler-getoption"><code>getOption()</code></h4>

```php
public function getOption( string $option ): string|null;
```

Returns a compiler's option

<h4 id="mvcviewenginevoltcompiler-getoptions"><code>getOptions()</code></h4>

```php
public function getOptions(): array;
```

Returns the compiler options

<h4 id="mvcviewenginevoltcompiler-gettemplatepath"><code>getTemplatePath()</code></h4>

```php
public function getTemplatePath(): string;
```

Returns the path that is currently being compiled

<h4 id="mvcviewenginevoltcompiler-getuniqueprefix"><code>getUniquePrefix()</code></h4>

```php
public function getUniquePrefix(): string;
```

Return a unique prefix to be used as prefix for compiled variables and
contexts

<h4 id="mvcviewenginevoltcompiler-parse"><code>parse()</code></h4>

```php
public function parse( string $viewCode ): array;
```

Parses a Volt template returning its intermediate representation

```php
print_r(
$compiler->parse("{{ 3 + 2 }}")
);
```

<h4 id="mvcviewenginevoltcompiler-resolvetest"><code>resolveTest()</code></h4>

```php
public function resolveTest(
array $test,
string $left
): string;
```

Resolves filter intermediate code into a valid PHP expression

<h4 id="mvcviewenginevoltcompiler-setdi"><code>setDI()</code></h4>

```php
public function setDI( DiInterface $container ): void;
```

Sets the dependency injector

<h4 id="mvcviewenginevoltcompiler-setoption"><code>setOption()</code></h4>

```php
public function setOption(
string $option,
mixed $value
): static;
```

Sets a single compiler option

<h4 id="mvcviewenginevoltcompiler-setoptions"><code>setOptions()</code></h4>

```php
public function setOptions( array $options ): static;
```

Sets the compiler options

<h4 id="mvcviewenginevoltcompiler-setuniqueprefix"><code>setUniquePrefix()</code></h4>

```php
public function setUniquePrefix( string $prefix ): static;
```

Set a unique prefix to be used as prefix for compiled variables

<div class="api-group">Protected · 5</div>

<h4 id="mvcviewenginevoltcompiler-compilesource"><code>compileSource()</code></h4>

```php
protected function compileSource(
string $viewCode,
bool $extendsMode = false
): array|string;
```

Compiles a Volt source code returning a PHP plain version

<h4 id="mvcviewenginevoltcompiler-getfinalpath"><code>getFinalPath()</code></h4>

```php
protected function getFinalPath( string $path );
```

Gets the final path with VIEW

<h4 id="mvcviewenginevoltcompiler-resolvefilter"><code>resolveFilter()</code></h4>

```php
final protected function resolveFilter(
array $filter,
string $left
): string;
```

Resolves filter intermediate code into PHP function calls

<h4 id="mvcviewenginevoltcompiler-statementlist"><code>statementList()</code></h4>

```php
final protected function statementList(
array $statements,
bool $extendsMode = false
): string;
```

Traverses a statement list compiling each of its nodes

<h4 id="mvcviewenginevoltcompiler-statementlistorextends"><code>statementListOrExtends()</code></h4>

```php
final protected function statementListOrExtends( mixed $statements );
```

Compiles a block of statements

## Mvc\View\Engine\Volt\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exception.zep">Source on GitHub</a>

Class for exceptions thrown by Phalcon\Mvc\View

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exception`**
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\CannotOpenCompiledFile`](#mvcviewenginevoltexceptionscannotopencompiledfile)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\CorruptedStatement`](#mvcviewenginevoltexceptionscorruptedstatement)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\CorruptedStatementWithData`](#mvcviewenginevoltexceptionscorruptedstatementwithdata)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidCompilationPrefix`](#mvcviewenginevoltexceptionsinvalidcompilationprefix)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidExtension`](#mvcviewenginevoltexceptionsinvalidextension)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidHaystack`](#mvcviewenginevoltexceptionsinvalidhaystack)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidIntermediateRepresentation`](#mvcviewenginevoltexceptionsinvalidintermediaterepresentation)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidOptionType`](#mvcviewenginevoltexceptionsinvalidoptiontype)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidPathClosureReturn`](#mvcviewenginevoltexceptionsinvalidpathclosurereturn)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidPathType`](#mvcviewenginevoltexceptionsinvalidpathtype)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidStatement`](#mvcviewenginevoltexceptionsinvalidstatement)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidUserFilterDefinition`](#mvcviewenginevoltexceptionsinvaliduserfilterdefinition)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidUserFunctionDefinition`](#mvcviewenginevoltexceptionsinvaliduserfunctiondefinition)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\MacroAlreadyDefined`](#mvcviewenginevoltexceptionsmacroalreadydefined)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\MacroNotFound`](#mvcviewenginevoltexceptionsmacronotfound)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\MbstringRequired`](#mvcviewenginevoltexceptionsmbstringrequired)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplateFileNotFound`](#mvcviewenginevoltexceptionstemplatefilenotfound)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplateFileNotOpenable`](#mvcviewenginevoltexceptionstemplatefilenotopenable)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplatePathCollision`](#mvcviewenginevoltexceptionstemplatepathcollision)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltExpression`](#mvcviewenginevoltexceptionsunknownvoltexpression)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilter`](#mvcviewenginevoltexceptionsunknownvoltfilter)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilterType`](#mvcviewenginevoltexceptionsunknownvoltfiltertype)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltStatement`](#mvcviewenginevoltexceptionsunknownvoltstatement)
- [`Phalcon\Mvc\View\Engine\Volt\Exceptions\VoltDirectoryNotWritable`](#mvcviewenginevoltexceptionsvoltdirectorynotwritable)

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexception-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$message</span><span class="sm"> = &quot;&quot;</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$statement</span><span class="sm"> = []</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$code</span><span class="sm"> = 0</span>,</span><span class="prm"><span class="st">\Exception|null</span> <span class="sv">$previous</span><span class="sm"> = null</span></span>)</code>
</a>
<a class="api-item" href="#mvcviewenginevoltexception-getstatement">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getStatement</span>()</code>
<span class="desc">Gets currently parsed statement (if any).</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$statement</span><span class="sm"> = []</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 2</div>

<h4 id="mvcviewenginevoltexception-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $message = "",
array $statement = [],
int $code = 0,
\Exception|null $previous = null
);
```

<h4 id="mvcviewenginevoltexception-getstatement"><code>getStatement()</code></h4>

```php
public function getStatement(): array;
```

Gets currently parsed statement (if any).

## Mvc\View\Engine\Volt\Exceptions\CannotOpenCompiledFile

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/CannotOpenCompiledFile.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\CannotOpenCompiledFile`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionscannotopencompiledfile-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionscannotopencompiledfile-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Mvc\View\Engine\Volt\Exceptions\CorruptedStatement

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/CorruptedStatement.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\CorruptedStatement`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionscorruptedstatement-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionscorruptedstatement-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\CorruptedStatementWithData

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/CorruptedStatementWithData.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\CorruptedStatementWithData`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionscorruptedstatementwithdata-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">array</span> <span class="sv">$statement</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionscorruptedstatementwithdata-__construct"><code>__construct()</code></h4>

```php
public function __construct( array $statement );
```

## Mvc\View\Engine\Volt\Exceptions\InvalidCompilationPrefix

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidCompilationPrefix.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidCompilationPrefix`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidcompilationprefix-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidcompilationprefix-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\InvalidExtension

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidExtension.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidExtension`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidextension-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidextension-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\InvalidHaystack

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidHaystack.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidHaystack`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidhaystack-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidhaystack-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\InvalidIntermediateRepresentation

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidIntermediateRepresentation.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidIntermediateRepresentation`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidintermediaterepresentation-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidintermediaterepresentation-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\InvalidOptionType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidOptionType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidOptionType`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidoptiontype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$option</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$type</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidoptiontype-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $option,
string $type
);
```

## Mvc\View\Engine\Volt\Exceptions\InvalidPathClosureReturn

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidPathClosureReturn.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidPathClosureReturn`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidpathclosurereturn-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidpathclosurereturn-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\InvalidPathType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidPathType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidPathType`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidpathtype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidpathtype-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\InvalidStatement

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidStatement.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidStatement`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvalidstatement-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$line</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$statement</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvalidstatement-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $file,
int $line,
array $statement
);
```

## Mvc\View\Engine\Volt\Exceptions\InvalidUserFilterDefinition

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidUserFilterDefinition.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidUserFilterDefinition`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvaliduserfilterdefinition-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$line</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvaliduserfilterdefinition-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $file,
int $line
);
```

## Mvc\View\Engine\Volt\Exceptions\InvalidUserFunctionDefinition

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/InvalidUserFunctionDefinition.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\InvalidUserFunctionDefinition`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsinvaliduserfunctiondefinition-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$line</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsinvaliduserfunctiondefinition-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $file,
int $line
);
```

## Mvc\View\Engine\Volt\Exceptions\MacroAlreadyDefined

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/MacroAlreadyDefined.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\MacroAlreadyDefined`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsmacroalreadydefined-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsmacroalreadydefined-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $name );
```

## Mvc\View\Engine\Volt\Exceptions\MacroNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/MacroNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\MacroNotFound`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsmacronotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$name</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsmacronotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $name );
```

## Mvc\View\Engine\Volt\Exceptions\MbstringRequired

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/MbstringRequired.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\MbstringRequired`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsmbstringrequired-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsmbstringrequired-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\TemplateFileNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/TemplateFileNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplateFileNotFound`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionstemplatefilenotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionstemplatefilenotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Mvc\View\Engine\Volt\Exceptions\TemplateFileNotOpenable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/TemplateFileNotOpenable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplateFileNotOpenable`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionstemplatefilenotopenable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$path</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionstemplatefilenotopenable-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $path );
```

## Mvc\View\Engine\Volt\Exceptions\TemplatePathCollision

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/TemplatePathCollision.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\TemplatePathCollision`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionstemplatepathcollision-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionstemplatepathcollision-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Engine\Volt\Exceptions\UnknownVoltExpression

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/UnknownVoltExpression.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltExpression`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsunknownvoltexpression-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">int</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$line</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsunknownvoltexpression-__construct"><code>__construct()</code></h4>

```php
public function __construct(
int $type,
string $file,
int $line
);
```

## Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilter

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/UnknownVoltFilter.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilter`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsunknownvoltfilter-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$name</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$line</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsunknownvoltfilter-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $name,
string $file,
int $line
);
```

## Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilterType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/UnknownVoltFilterType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltFilterType`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsunknownvoltfiltertype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$line</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsunknownvoltfiltertype-__construct"><code>__construct()</code></h4>

```php
public function __construct(
string $file,
int $line
);
```

## Mvc\View\Engine\Volt\Exceptions\UnknownVoltStatement

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/UnknownVoltStatement.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\UnknownVoltStatement`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsunknownvoltstatement-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>(<span class="prm"><span class="st">int</span> <span class="sv">$type</span>,</span><span class="prm"><span class="st">string</span> <span class="sv">$file</span>,</span><span class="prm"><span class="st">int</span> <span class="sv">$line</span></span>)</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsunknownvoltstatement-__construct"><code>__construct()</code></h4>

```php
public function __construct(
int $type,
string $file,
int $line
);
```

## Mvc\View\Engine\Volt\Exceptions\VoltDirectoryNotWritable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Engine/Volt/Exceptions/VoltDirectoryNotWritable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- **`Phalcon\Mvc\View\Engine\Volt\Exceptions\VoltDirectoryNotWritable`**

</div>

__Uses__ `Phalcon\Mvc\View\Engine\Volt\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewenginevoltexceptionsvoltdirectorynotwritable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewenginevoltexceptionsvoltdirectorynotwritable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Exception

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exception.zep">Source on GitHub</a>

Phalcon\Mvc\View\Exception

Class for exceptions thrown by Phalcon\Mvc\View

<div class="api-tree">

- `\Exception`
- **`Phalcon\Mvc\View\Exception`**
- [`Phalcon\Mvc\View\Engine\Volt\Exception`](#mvcviewenginevoltexception)
- [`Phalcon\Mvc\View\Exceptions\InvalidEngineRegistration`](#mvcviewexceptionsinvalidengineregistration)
- [`Phalcon\Mvc\View\Exceptions\InvalidViewsDirType`](#mvcviewexceptionsinvalidviewsdirtype)
- [`Phalcon\Mvc\View\Exceptions\SimpleViewNotFound`](#mvcviewexceptionssimpleviewnotfound)
- [`Phalcon\Mvc\View\Exceptions\SimpleViewServicesUnavailable`](#mvcviewexceptionssimpleviewservicesunavailable)
- [`Phalcon\Mvc\View\Exceptions\ViewNotFound`](#mvcviewexceptionsviewnotfound)
- [`Phalcon\Mvc\View\Exceptions\ViewServicesUnavailable`](#mvcviewexceptionsviewservicesunavailable)
- [`Phalcon\Mvc\View\Exceptions\ViewsDirItemMustBeString`](#mvcviewexceptionsviewsdiritemmustbestring)

</div>

## Mvc\View\Exceptions\InvalidEngineRegistration

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exceptions/InvalidEngineRegistration.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Exceptions\InvalidEngineRegistration`**

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewexceptionsinvalidengineregistration-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$extension</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewexceptionsinvalidengineregistration-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $extension );
```

## Mvc\View\Exceptions\InvalidViewsDirType

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exceptions/InvalidViewsDirType.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Exceptions\InvalidViewsDirType`**

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewexceptionsinvalidviewsdirtype-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewexceptionsinvalidviewsdirtype-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Exceptions\SimpleViewNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exceptions/SimpleViewNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Exceptions\SimpleViewNotFound`**

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewexceptionssimpleviewnotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$viewsDirPath</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewexceptionssimpleviewnotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $viewsDirPath );
```

## Mvc\View\Exceptions\SimpleViewServicesUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exceptions/SimpleViewServicesUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Exceptions\SimpleViewServicesUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewexceptionssimpleviewservicesunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewexceptionssimpleviewservicesunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Exceptions\ViewNotFound

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exceptions/ViewNotFound.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Exceptions\ViewNotFound`**

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewexceptionsviewnotfound-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">string</span> <span class="sv">$viewPath</span> )</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewexceptionsviewnotfound-__construct"><code>__construct()</code></h4>

```php
public function __construct( string $viewPath );
```

## Mvc\View\Exceptions\ViewServicesUnavailable

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exceptions/ViewServicesUnavailable.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Exceptions\ViewServicesUnavailable`**

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewexceptionsviewservicesunavailable-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewexceptionsviewservicesunavailable-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Exceptions\ViewsDirItemMustBeString

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Exceptions/ViewsDirItemMustBeString.zep">Source on GitHub</a>

<div class="api-tree">

- `\Exception`
- [`Phalcon\Mvc\View\Exception`](#mvcviewexception)
- **`Phalcon\Mvc\View\Exceptions\ViewsDirItemMustBeString`**

</div>

__Uses__ `Phalcon\Mvc\View\Exception`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewexceptionsviewsdiritemmustbestring-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>()</code>
</a>
</div>

### Methods

<div class="api-group">Public · 1</div>

<h4 id="mvcviewexceptionsviewsdiritemmustbestring-__construct"><code>__construct()</code></h4>

```php
public function __construct();
```

## Mvc\View\Simple

<span class="badge badge--class">Class</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Simple.zep">Source on GitHub</a>

This component allows to render views without hierarchical levels

```php
use Phalcon\Mvc\View\Simple as View;

$view = new View();

// Render a view
echo $view->render(
"templates/my-view",
[
    "some" => $param,
]
);

// Or with filename with extension
echo $view->render(
"templates/my-view.volt",
[
    "parameter" => $here,
]
);
```

<div class="api-tree">

- `\stdClass`
- [`Phalcon\Di\Injectable`](/5.19/api/phalcon_di/#diinjectable)
- **`Phalcon\Mvc\View\Simple`** - implements [`Phalcon\Mvc\ViewBaseInterface`](#mvcviewbaseinterface), [`Phalcon\Events\EventsAwareInterface`](/5.19/api/phalcon_events/#eventseventsawareinterface), [`Phalcon\Contracts\View\Renderer`](/5.19/api/phalcon_contracts/#contractsviewrenderer)

</div>

__Uses__ `Closure` · `Phalcon\Contracts\View\Renderer` · `Phalcon\Di\DiInterface` · `Phalcon\Di\Injectable` · `Phalcon\Events\EventsAwareInterface` · `Phalcon\Events\ManagerInterface` · `Phalcon\Mvc\ViewBaseInterface` · `Phalcon\Mvc\View\Engine\EngineInterface` · `Phalcon\Mvc\View\Engine\Php` · `Phalcon\Mvc\View\Exceptions\InvalidEngineRegistration` · `Phalcon\Mvc\View\Exceptions\SimpleViewNotFound` · `Phalcon\Mvc\View\Exceptions\SimpleViewServicesUnavailable` · `Phalcon\Mvc\View\Traits\ViewParamsTrait` · `Phalcon\Traits\Php\FileTrait` · `Phalcon\Traits\Support\Helper\Str\DirSeparatorTrait`

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewsimple-__construct">
<code class="vis vis-public">public</code>
<code class="sig"><span class="sf">__construct</span>( <span class="st">array</span> <span class="sv">$options</span><span class="sm"> = []</span> )</code>
<span class="desc">Phalcon\Mvc\View\Simple constructor</span>
</a>
<a class="api-item" href="#mvcviewsimple-__get">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">__get</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
<span class="desc">Magic method to retrieve a variable passed to the view</span>
</a>
<a class="api-item" href="#mvcviewsimple-__set">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">__set</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Magic method to pass variables to the views</span>
</a>
<a class="api-item" href="#mvcviewsimple-getactiverenderpath">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getActiveRenderPath</span>()</code>
<span class="desc">Returns the path of the view that is currently rendered</span>
</a>
<a class="api-item" href="#mvcviewsimple-geteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sf">getEventsManager</span>()</code>
<span class="desc">Returns the internal event manager</span>
</a>
<a class="api-item" href="#mvcviewsimple-getviewsdir">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getViewsDir</span>()</code>
<span class="desc">Gets views directory</span>
</a>
<a class="api-item" href="#mvcviewsimple-partial">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">partial</span>(<span class="prm"><span class="st">string</span> <span class="sv">$partialPath</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span><span class="sm"> = null</span></span>)</code>
<span class="desc">Renders a partial view</span>
</a>
<a class="api-item" href="#mvcviewsimple-registerengines">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">registerEngines</span>( <span class="st">array</span> <span class="sv">$engines</span> )</code>
<span class="desc">Register templating engines</span>
</a>
<a class="api-item" href="#mvcviewsimple-render">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">render</span>(<span class="prm"><span class="st">string</span> <span class="sv">$path</span>,</span><span class="prm"><span class="st">array</span> <span class="sv">$params</span><span class="sm"> = []</span></span>)</code>
<span class="desc">Renders a view</span>
</a>
<a class="api-item" href="#mvcviewsimple-seteventsmanager">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setEventsManager</span>( <span class="st">ManagerInterface</span> <span class="sv">$eventsManager</span> )</code>
<span class="desc">Sets the events manager</span>
</a>
<a class="api-item" href="#mvcviewsimple-setparamtoview">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setParamToView</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Adds parameters to views (alias of setVar)</span>
</a>
<a class="api-item" href="#mvcviewsimple-setvars">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setVars</span>(<span class="prm"><span class="st">array</span> <span class="sv">$params</span>,</span><span class="prm"><span class="st">bool</span> <span class="sv">$merge</span><span class="sm"> = true</span></span>)</code>
<span class="desc">Set all the render params</span>
</a>
<a class="api-item" href="#mvcviewsimple-setviewsdir">
<code class="vis vis-public">public</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">setViewsDir</span>( <span class="st">string</span> <span class="sv">$viewsDir</span> )</code>
<span class="desc">Sets views directory</span>
</a>
<a class="api-item" href="#mvcviewsimple-internalrender">
<code class="vis vis-protected">protected</code>
<code class="ret">void</code>
<code class="sig"><span class="sf">internalRender</span>(<span class="prm"><span class="st">string</span> <span class="sv">$path</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$params</span></span>)</code>
<span class="desc">Tries to render the view with every engine registered in the component</span>
</a>
<a class="api-item" href="#mvcviewsimple-loadtemplateengines">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">loadTemplateEngines</span>()</code>
<span class="desc">Loads registered template engines, if none are registered it will use</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$activeRenderPath</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">EngineInterface[]|false</code>
<code class="sig"><span class="sv">$engines</span><span class="sm"> = false</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">ManagerInterface|null</code>
<code class="sig"><span class="sv">$eventsManager</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$options</span><span class="sm"> = []</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$viewsDir</span></code>
</div>
</div>

### Methods

<div class="api-group">Public · 13</div>

<h4 id="mvcviewsimple-__construct"><code>__construct()</code></h4>

```php
public function __construct( array $options = [] );
```

Phalcon\Mvc\View\Simple constructor

<h4 id="mvcviewsimple-__get"><code>__get()</code></h4>

```php
public function __get( string $key ): mixed|null;
```

Magic method to retrieve a variable passed to the view

```php
echo $this->view->products;
```

<h4 id="mvcviewsimple-__set"><code>__set()</code></h4>

```php
public function __set(
string $key,
mixed $value
): void;
```

Magic method to pass variables to the views

```php
$this->view->products = $products;
```

<h4 id="mvcviewsimple-getactiverenderpath"><code>getActiveRenderPath()</code></h4>

```php
public function getActiveRenderPath(): string;
```

Returns the path of the view that is currently rendered

<h4 id="mvcviewsimple-geteventsmanager"><code>getEventsManager()</code></h4>

```php
public function getEventsManager(): ManagerInterface|null;
```

Returns the internal event manager

<h4 id="mvcviewsimple-getviewsdir"><code>getViewsDir()</code></h4>

```php
public function getViewsDir(): string;
```

Gets views directory

<h4 id="mvcviewsimple-partial"><code>partial()</code></h4>

```php
public function partial(
string $partialPath,
mixed $params = null
): void;
```

Renders a partial view

```php
// Show a partial inside another view
$this->partial("shared/footer");
```

```php
// Show a partial inside another view with parameters
$this->partial(
"shared/footer",
[
    "content" => $html,
]
);
```

<h4 id="mvcviewsimple-registerengines"><code>registerEngines()</code></h4>

```php
public function registerEngines( array $engines ): void;
```

Register templating engines

```php
$this->view->registerEngines(
[
    ".phtml" => \Phalcon\Mvc\View\Engine\Php::class,
    ".volt"  => \Phalcon\Mvc\View\Engine\Volt::class,
    ".mhtml" => \MyCustomEngine::class,
]
);
```

<h4 id="mvcviewsimple-render"><code>render()</code></h4>

```php
public function render(
string $path,
array $params = []
): string;
```

Renders a view

<h4 id="mvcviewsimple-seteventsmanager"><code>setEventsManager()</code></h4>

```php
public function setEventsManager( ManagerInterface $eventsManager ): void;
```

Sets the events manager

<h4 id="mvcviewsimple-setparamtoview"><code>setParamToView()</code></h4>

```php
public function setParamToView(
string $key,
mixed $value
): static;
```

Adds parameters to views (alias of setVar)

```php
$this->view->setParamToView("products", $products);
```

<h4 id="mvcviewsimple-setvars"><code>setVars()</code></h4>

```php
public function setVars(
array $params,
bool $merge = true
): static;
```

Set all the render params

```php
$this->view->setVars(
[
    "products" => $products,
]
);
```

<h4 id="mvcviewsimple-setviewsdir"><code>setViewsDir()</code></h4>

```php
public function setViewsDir( string $viewsDir ): void;
```

Sets views directory

<div class="api-group">Protected · 2</div>

<h4 id="mvcviewsimple-internalrender"><code>internalRender()</code></h4>

```php
final protected function internalRender(
string $path,
mixed $params
): void;
```

Tries to render the view with every engine registered in the component

<h4 id="mvcviewsimple-loadtemplateengines"><code>loadTemplateEngines()</code></h4>

```php
protected function loadTemplateEngines(): array;
```

Loads registered template engines, if none are registered it will use
Phalcon\Mvc\View\Engine\Php

## Mvc\View\Traits\ViewParamsTrait

<span class="badge badge--trait">Trait</span>
<a class="src-btn" href="https://github.com/phalcon/cphalcon/blob/5.0.x/phalcon/Mvc/View/Traits/ViewParamsTrait.zep">Source on GitHub</a>

Shared view parameter and content accessors

@todo v7 - inspect the View/Simple interfaces (ViewInterface vs ViewBaseInterface) to see whether these accessors can be unified behind a shared contract

<div class="api-tree">

- **`Phalcon\Mvc\View\Traits\ViewParamsTrait`**

</div>

__Used by__ [`Phalcon\Mvc\View`](#mvcview) · [`Phalcon\Mvc\View\Simple`](#mvcviewsimple)

### Method Summary

<div class="api-list">
<a class="api-item" href="#mvcviewtraitsviewparamstrait-getcontent">
<code class="vis vis-public">public</code>
<code class="ret">string</code>
<code class="sig"><span class="sf">getContent</span>()</code>
<span class="desc">Returns output from another view stage</span>
</a>
<a class="api-item" href="#mvcviewtraitsviewparamstrait-getparamstoview">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getParamsToView</span>()</code>
<span class="desc">Returns parameters to views</span>
</a>
<a class="api-item" href="#mvcviewtraitsviewparamstrait-getregisteredengines">
<code class="vis vis-public">public</code>
<code class="ret">array</code>
<code class="sig"><span class="sf">getRegisteredEngines</span>()</code>
</a>
<a class="api-item" href="#mvcviewtraitsviewparamstrait-getvar">
<code class="vis vis-public">public</code>
<code class="ret">mixed|null</code>
<code class="sig"><span class="sf">getVar</span>( <span class="st">string</span> <span class="sv">$key</span> )</code>
<span class="desc">Returns a parameter previously set in the view</span>
</a>
<a class="api-item" href="#mvcviewtraitsviewparamstrait-setcontent">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setContent</span>( <span class="st">string</span> <span class="sv">$content</span> )</code>
<span class="desc">Externally sets the view content</span>
</a>
<a class="api-item" href="#mvcviewtraitsviewparamstrait-setvar">
<code class="vis vis-public">public</code>
<code class="ret">static</code>
<code class="sig"><span class="sf">setVar</span>(<span class="prm"><span class="st">string</span> <span class="sv">$key</span>,</span><span class="prm"><span class="st">mixed</span> <span class="sv">$value</span></span>)</code>
<span class="desc">Set a single view parameter</span>
</a>
</div>

### Properties

<div class="api-list">
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">string</code>
<code class="sig"><span class="sv">$content</span><span class="sm"> = &quot;&quot;</span></code>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$registeredEngines</span><span class="sm"> = null</span></code>
<span class="desc">@todo Use a default [] once Zephir supports array trait defaults</span>
</div>
<div class="api-item">
<code class="vis vis-protected">protected</code>
<code class="ret">array</code>
<code class="sig"><span class="sv">$viewParams</span><span class="sm"> = null</span></code>
<span class="desc">@todo Use a default [] once Zephir supports array trait defaults</span>
</div>
</div>

### Methods

<div class="api-group">Public · 6</div>

<h4 id="mvcviewtraitsviewparamstrait-getcontent"><code>getContent()</code></h4>

```php
public function getContent(): string;
```

Returns output from another view stage

<h4 id="mvcviewtraitsviewparamstrait-getparamstoview"><code>getParamsToView()</code></h4>

```php
public function getParamsToView(): array;
```

Returns parameters to views

<h4 id="mvcviewtraitsviewparamstrait-getregisteredengines"><code>getRegisteredEngines()</code></h4>

```php
public function getRegisteredEngines(): array;
```

<h4 id="mvcviewtraitsviewparamstrait-getvar"><code>getVar()</code></h4>

```php
public function getVar( string $key ): mixed|null;
```

Returns a parameter previously set in the view

<h4 id="mvcviewtraitsviewparamstrait-setcontent"><code>setContent()</code></h4>

```php
public function setContent( string $content ): static;
```

Externally sets the view content

```php
$this->view->setContent("<h1>hello</h1>");
```

<h4 id="mvcviewtraitsviewparamstrait-setvar"><code>setVar()</code></h4>

```php
public function setVar(
string $key,
mixed $value
): static;
```

Set a single view parameter

```php
$this->view->setVar("products", $products);
```

Source: https://docs.phalcon.io/5.19/api/phalcon_mvc/index.mdx
