1: <?php
2:
3: namespace PHPixie\Database\Driver\PDO\Query\Type;
4:
5: class Select extends \PHPixie\Database\Driver\PDO\Query\Items implements \PHPixie\Database\Type\SQL\Query\Type\Select
6: {
7: public function type()
8: {
9: return 'select';
10: }
11:
12: public function fields($fields)
13: {
14: $this->builder->addFields(func_get_args());
15:
16: return $this;
17: }
18:
19: public function clearFields()
20: {
21: $this->builder->clearArray('fields');
22:
23: return $this;
24: }
25:
26: public function getFields()
27: {
28: return $this->builder->getArray('fields');
29: }
30:
31: public function groupBy($fields)
32: {
33: $this->builder->addGroupBy(func_get_args());
34:
35: return $this;
36: }
37:
38: public function clearGroupBy()
39: {
40: $this->builder->clearArray('groupBy');
41:
42: return $this;
43: }
44:
45: public function getGroupBy()
46: {
47: return $this->builder->getArray('groupBy');
48: }
49:
50: public function union($query, $all = false)
51: {
52: $this->builder->addUnion($query, $all);
53:
54: return $this;
55: }
56:
57: public function clearUnions()
58: {
59: $this->builder->clearArray('unions');
60:
61: return $this;
62: }
63:
64: public function getUnions()
65: {
66: return $this->builder->getArray('unions');
67: }
68:
69: public function execute()
70: {
71: return parent::execute();
72: }
73:
74: public function buildHavingCondition($logic, $negate, $params)
75: {
76: return $this->buildContainerCondition($logic, $negate, $params, 'having');
77: }
78:
79: public function addHavingCondition($logic, $negate, $condition)
80: {
81: return $this->addContainerCondition($logic, $negate, $condition, 'having');
82: }
83:
84: public function getHavingContainer()
85: {
86: return $this->builder->conditionContainer('having');
87: }
88:
89: public function getHavingConditions()
90: {
91: return $this->builder->getConditions('having');
92: }
93:
94: public function addHavingOperatorCondition($logic, $negate, $field, $operator, $values)
95: {
96: return $this->addContainerOperatorCondition($logic, $negate, $field, $operator, $values, 'having');
97: }
98:
99: public function addHavingInOperatorCondition($field, $values, $logic = 'and', $negate = false)
100: {
101: return $this->addContainerInOperatorCondition($field, $values, $logic, $negate, 'having');
102: }
103:
104: public function startHavingConditionGroup($logic = 'and', $negate = false)
105: {
106: return $this->startContainerConditionGroup($logic, $negate, 'having');
107: }
108:
109: public function addHavingPlaceholder($logic = 'and', $negate = false, $allowEmpty = true)
110: {
111: return $this->addContainerPlaceholder($logic, $negate, $allowEmpty, 'having');
112: }
113:
114: public function having()
115: {
116: return $this->buildContainerCondition('and', false, func_get_args(), 'having');
117: }
118:
119: public function andHaving()
120: {
121: return $this->buildContainerCondition('and', false, func_get_args(), 'having');
122: }
123:
124: public function orHaving()
125: {
126: return $this->buildContainerCondition('or', false, func_get_args(), 'having');
127: }
128:
129: public function xorHaving()
130: {
131: return $this->buildContainerCondition('xor', false, func_get_args(), 'having');
132: }
133:
134: public function havingNot()
135: {
136: return $this->buildContainerCondition('and', true, func_get_args(), 'having');
137: }
138:
139: public function andHavingNot()
140: {
141: return $this->buildContainerCondition('and', true, func_get_args(), 'having');
142: }
143:
144: public function orHavingNot()
145: {
146: return $this->buildContainerCondition('or', true, func_get_args(), 'having');
147: }
148:
149: public function xorHavingNot()
150: {
151: return $this->buildContainerCondition('xor', true, func_get_args(), 'having');
152: }
153:
154: public function startHavingGroup()
155: {
156: return $this->startContainerConditionGroup('and', false, 'having');
157: }
158:
159: public function startAndHavingGroup()
160: {
161: return $this->startContainerConditionGroup('and', false, 'having');
162: }
163:
164: public function startOrHavingGroup()
165: {
166: return $this->startContainerConditionGroup('or', false, 'having');
167: }
168:
169: public function startXorHavingGroup()
170: {
171: return $this->startContainerConditionGroup('xor', false, 'having');
172: }
173:
174: public function startHavingNotGroup()
175: {
176: return $this->startContainerConditionGroup('and', true, 'having');
177: }
178:
179: public function startAndHavingNotGroup()
180: {
181: return $this->startContainerConditionGroup('and', true, 'having');
182: }
183:
184: public function startOrHavingNotGroup()
185: {
186: return $this->startContainerConditionGroup('or', true, 'having');
187: }
188:
189: public function startXorHavingNotGroup()
190: {
191: return $this->startContainerConditionGroup('xor', true, 'having');
192: }
193:
194: public function endHavingGroup()
195: {
196: return $this->endContainerConditionGroup('having');
197: }
198: }
199: