%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/main/lib/orm/query/ |
Current File : //home/bitrix/www/bitrix/modules/main/lib/orm/query/unioncondition.php |
<?php /** * Bitrix Framework * @package bitrix * @subpackage main * @copyright 2001-2017 Bitrix */ namespace Bitrix\Main\ORM\Query; use Bitrix\Main\ArgumentException; use Bitrix\Main\DB\SqlExpression; /** * UNION container to be used in Query. * * @package bitrix * @subpackage main */ class UnionCondition { /** @var Query|SqlExpression */ protected $subQuery; /** @var bool */ protected $all; /** * @param Query|SqlExpression $subQuery * @param bool $unionAll * * @throws ArgumentException */ public function __construct($subQuery, $unionAll = false) { if (!($subQuery instanceof Query) && !($subQuery instanceof SqlExpression)) { throw new ArgumentException("Query or SqlExpression expected, `".gettype($subQuery)."` found."); } $this->subQuery = $subQuery; $this->all = $unionAll; } /** * @return SqlExpression|Query */ public function getSubQuery() { return $this->subQuery; } /** * @param SqlExpression|Query $subQuery */ public function setSubQuery($subQuery) { $this->subQuery = $subQuery; } /** * @return bool */ public function isAll() { return $this->all; } /** * @param bool $all */ public function setAll($all) { $this->all = $all; } /** * @return string */ public function getSql() { $sql = "UNION "; if ($this->all) { $sql .= "ALL "; } return $sql."({$this->getSubQuerySql()})"; } /** * @return string */ public function getSubQuerySql() { if ($this->subQuery instanceof Query) { return $this->subQuery->getQuery(); } elseif ($this->subQuery instanceof SqlExpression) { return $this->subQuery->compile(); } return null; } }