Класс Phalcon\Mvc\Model\Query\Builder

Реализует Phalcon\Mvc\Model\Query\BuilderInterface, Phalcon\Di\InjectionAwareInterface

Source on GitHub

Помогает создавать запросы PHQL с использованием интерфейса OO

<?php

$params = [
    "models"     => ["Users"],
    "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);

Константы

string OPERATOR_OR

string OPERATOR_AND

Методы

public __construct ([mixed $params], [Phalcon\DiInterface $dependencyInjector])

Phalcon\Mvc\Model\Query\Builder конструктор

public setDI (Phalcon\DiInterface $dependencyInjector)

Устанавливает контейнер DependencyInjector

public getDI ()

Возвращает контейнер DependencyInjector

public distinct (mixed $distinct)

Устанавливает флажок SELECT DISTINCT / SELECT ALL

<?php

$builder->distinct("status");
$builder->distinct(null);

public getDistinct ()

Возвращает флаг SELECT DISTINCT / SELECT ALL

public columns (mixed $columns)

Задает запрашиваемые столбцы

<?php

$builder->columns("id, name");

$builder->columns(
    [
        "id",
        "name",
    ]
);

$builder->columns(
    [
        "name",
        "number" => "COUNT(*)",
    ]
);

public string | array getColumns ()

Возврат столбцов для запроса

public from (mixed $models)

Задает модели, которые делают часть запроса

<?php

$builder->from("Robots");

$builder->from(
    [
        "Robots",
        "RobotsParts",
    ]
);

$builder->from(
    [
        "r"  => "Robots",
        "rp" => "RobotsParts",
    ]
);

public addFrom (mixed $model, [mixed $alias], [mixed $with])

Добавление модели для принятия части запроса

<?php

// Загрузка данных из моделей роботы
$builder->addFrom("Robots");

// Загрузка данных из модели 'Robots' с использованием 'r' в качестве псевдонима в PHQL
$builder->addFrom("Robots", "r");

// Загрузка данных из модели 'Robots' с использованием 'r' в качестве псевдонима в PHQL
// и загружаемая модель 'RobotsParts'
$builder->addFrom("Robots", "r", "RobotsParts");

// Загрузить данные из модели 'Robots', используя 'r' в качестве псевдонима в PHQL
// и предвыборки моделей 'RobotsParts' и 'Parts'
$builder->addFrom(
    "Robots",
    "r",
    [
        "RobotsParts",
        "Parts",
    ]
);

public string | array getFrom ()

Возврат моделей, составляющих часть запроса

public Phalcon\Mvc\Model\Query\Builder join (string $model, [string $conditions], [string $alias], [string $type])

Добавляет: type: join (по умолчанию type - INNER) к запросу

<?php

// Inner Join модель  'Robots' с автоматическими условиями и псевдонимами
$builder->join("Robots");

// Inner Join модель  'Robots', определяющая условия
$builder->join("Robots", "Robots.id = RobotsParts.robots_id");

// Inner Join модель  'Robots', определяющая условия и псевдоним
$builder->join("Robots", "r.id = RobotsParts.robots_id", "r");

// Left Join модель 'Robots', определяющие условия, псевдоним и тип соединения
$builder->join("Robots", "r.id = RobotsParts.robots_id", "r", "LEFT");

public Phalcon\Mvc\Model\Query\Builder innerJoin (string $model, [string $conditions], [string $alias])

Добавляет соединение INNER к запросу

<?php

// Inner Join модель 'Robots' с автоматическими условиями и псевдонимом
$builder->innerJoin("Robots");

// Inner Join модель 'Robots', определяющие условия
$builder->innerJoin("Robots", "Robots.id = RobotsParts.robots_id");

// Inner Join модель 'Robots', определяющие условия и псевдоним
$builder->innerJoin("Robots", "r.id = RobotsParts.robots_id", "r");

public Phalcon\Mvc\Model\Query\Builder leftJoin (string $model, [string $conditions], [string $alias])

Добавляет LEFT Join к запросу

<?php

$builder->leftJoin("Robots", "r.id = RobotsParts.robots_id", "r");

public Phalcon\Mvc\Model\Query\Builder rightJoin (string $model, [string $conditions], [string $alias])

Добавляет RIGHTJoin к запросу

<?php

$builder->rightJoin("Robots", "r.id = RobotsParts.robots_id", "r");

public array getJoins ()

Возврат частей запроса join

public Phalcon\Mvc\Model\Query\Builder where (mixed $conditions, [array $bindParams], [array $bindTypes])

Устанавливает условия запроса WHERE

<?php

$builder->where(100);

$builder->where("name = 'Peter'");

$builder->where(
    "name = :name: AND id > :id:",
    [
        "name" => "Peter",
        "id"   => 100,
    ]
);

public Phalcon\Mvc\Model\Query\Builder andWhere (string $conditions, [array $bindParams], [array $bindTypes])

Добавляет условие к текущим условиям WHERE с использованием оператора AND

<?php

$builder->andWhere("name = 'Peter'");

$builder->andWhere(
    "name = :name: AND id > :id:",
    [
        "name" => "Peter",
        "id"   => 100,
    ]
);

 

public Phalcon\Mvc\Model\Query\Builder orWhere (string $conditions, [array $bindParams], [array $bindTypes])

Добавляет условие к текущим условиям с использованием оператора OR

<?php

$builder->orWhere("name = 'Peter'");

$builder->orWhere(
    "name = :name: AND id > :id:",
    [
        "name" => "Peter",
        "id"   => 100,
    ]
);

public betweenWhere (mixed $expr, mixed $minimum, mixed $maximum, [mixed $operator])

Добавляет условие BETWEEN текущими условиями WHERE

<?php

$builder->betweenWhere("price", 100.25, 200.50);

public notBetweenWhere (mixed $expr, mixed $minimum, mixed $maximum, [mixed $operator])

Добавляет условие NOT BETWEEN к текущим условиям WHERE

<?php

$builder->notBetweenWhere("price", 100.25, 200.50);

public inWhere (mixed $expr, array $values, [mixed $operator])

Добавляет условие IN к текущим условиям WHERE

<?php

$builder->inWhere("id", [1, 2, 3]);

public notInWhere (mixed $expr, array $values, [mixed $operator])

Добавляет условие NOT IN к текущим условиям WHERE

<?php

$builder->notInWhere("id", [1, 2, 3]);

public string | array getWhere ()

Вернуть условия для запроса

public Phalcon\Mvc\Model\Query\Builder orderBy (string | array $orderBy)

Задает предложение условия ORDER BY

<?php

$builder->orderBy("Robots.name");
$builder->orderBy(["1", "Robots.name"]);

public string | array getOrderBy ()

Возвращает заданное предложение ORDER BY

public Phalcon\Mvc\Model\Query\Builder having (mixed $conditions, [array $bindParams], [array $bindTypes])

Задает условие HAVING

<?php

$builder->having("SUM(Robots.price) > 0");

$builder->having(
        "SUM(Robots.price) > :sum:",
    [
        "sum" => 100,
     ]
);

public Phalcon\Mvc\Model\Query\Builder andHaving (string $conditions, [array $bindParams], [array $bindTypes])

Добавляет условие к текущему условию HAVING с помощью оператора AND

<?php

$builder->andHaving("SUM(Robots.price) > 0");

$builder->andHaving(
        "SUM(Robots.price) > :sum:",
    [
        "sum" => 100,
     ]
);

public Phalcon\Mvc\Model\Query\Builder orHaving (string $conditions, [array $bindParams], [array $bindTypes])

Добавляет условие к текущему условию HAVING с помощью оператора OR

<?php

$builder->orHaving("SUM(Robots.price) > 0");

$builder->orHaving(
        "SUM(Robots.price) > :sum:",
    [
        "sum" => 100,
     ]
);

public betweenHaving (mixed $expr, mixed $minimum, mixed $maximum, [mixed $operator])

Добавляет условие BETWEEN к текущему условию HAVING

<?php

$builder->betweenHaving("SUM(Robots.price)", 100.25, 200.50);

public notBetweenHaving (mixed $expr, mixed $minimum, mixed $maximum, [mixed $operator])

Добавляет условие NOT BETWEEN к текущему условию HAVING

<?php

$builder->notBetweenHaving("SUM(Robots.price)", 100.25, 200.50);

public inHaving (mixed $expr, array $values, [mixed $operator])

Добавляет условие IN к текущему условию  HAVING

<?php

$builder->inHaving("SUM(Robots.price)", [100, 200]);

public notInHaving (mixed $expr, array $values, [mixed $operator])

Добавляет условие NOT IN к текущему условию  HAVING

<?php

$builder->notInHaving("SUM(Robots.price)", [100, 200]);

public string getHaving ()

Вернуть текущую позицию

public forUpdate (mixed $forUpdate)

Устанавливает условие FOR UPDATE

<?php

$builder->forUpdate(true);

public limit (mixed $limit, [mixed $offset])

Устанавливает предложение LIMIT, необязательно условие offset

<?php

$builder->limit(100);
$builder->limit(100, 20);
$builder->limit("100", "20");

public string | array getLimit ()

Возвращает текущее предложение LIMIT

public offset (mixed $offset)

Устанавливает условие OFFSET

<?php

$builder->offset(30);

 

public string | array getOffset ()

Возвращает текущую позицию OFFSET

public Phalcon\Mvc\Model\Query\Builder groupBy (string | array $group)

Устанавливает предложение GROUP BY

<?php

$builder->groupBy(
    [
        "Robots.name",
    ]
);

public string getGroupBy ()

Возвращает предложение GROUP BY

final public string getPhql ()

Возвращает инструкцию PHQL, построенную на основе параметров компоновщика

public getQuery ()

Возвращает построенный запрос

final public autoescape (mixed $identifier)

Автоматически экранирует идентификаторы, но только если их нужно экранировать.

private _conditionBetween (mixed $clause, mixed $operator, mixed $expr, mixed $minimum, mixed $maximum)

Добавляет условие BETWEEN

private _conditionNotBetween (mixed $clause, mixed $operator, mixed $expr, mixed $minimum, mixed $maximum)

Добавляет условие NOT BETWEEN

private _conditionIn (mixed $clause, mixed $operator, mixed $expr, array $values)

Добавляет условие IN

private _conditionNotIn (mixed $clause, mixed $operator, mixed $expr, array $values)

Добавляет условие NOT IN