PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.14.2
GiveWP – Donation Plugin and Fundraising Platform v3.14.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / QueryBuilder / Concerns / SelectStatement.php
give / src / Framework / QueryBuilder / Concerns Last commit date
Aggregate.php 3 years ago CRUD.php 3 years ago FromClause.php 4 years ago GroupByStatement.php 4 years ago HavingClause.php 3 years ago JoinClause.php 4 years ago LimitStatement.php 4 years ago MetaQuery.php 3 years ago OffsetStatement.php 4 years ago OrderByStatement.php 4 years ago SelectStatement.php 4 years ago TablePrefix.php 4 years ago UnionOperator.php 4 years ago WhereClause.php 3 years ago
SelectStatement.php
128 lines
1 <?php
2
3 namespace Give\Framework\QueryBuilder\Concerns;
4
5 use Give\Framework\Database\DB;
6 use Give\Framework\QueryBuilder\Clauses\RawSQL;
7 use Give\Framework\QueryBuilder\Clauses\Select;
8
9 /**
10 * @since 2.19.0
11 */
12 trait SelectStatement
13 {
14 /**
15 * @var Select[]|RawSQL[]
16 */
17 protected $selects = [];
18
19 /**
20 * @var bool
21 */
22 protected $distinct = false;
23
24 /**
25 * @var bool
26 */
27 private $includeSelectKeyword = true;
28
29 /**
30 * @param array $columns
31 *
32 * @return $this
33 */
34 public function select(...$columns)
35 {
36 $selects = array_map(function ($select) {
37 if (is_array($select)) {
38 list($column, $alias) = $select;
39
40 return new Select($column, $alias);
41 }
42
43 return new Select($select);
44 }, $columns);
45
46 $this->selects = array_merge($this->selects, $selects);
47
48 return $this;
49 }
50
51 /**
52 * Add raw SQL SELECT statement
53 *
54 * @param string $sql
55 * @param ...$args
56 */
57 public function selectRaw($sql, ...$args)
58 {
59 $this->selects[] = new RawSQL($sql, $args);
60
61 return $this;
62 }
63
64
65 /**
66 * Select distinct
67 *
68 * @return $this
69 */
70 public function distinct()
71 {
72 $this->distinct = true;
73
74 return $this;
75 }
76
77 /**
78 * @return string[]
79 */
80 protected function getSelectSQL()
81 {
82 // Select all by default
83 if (empty($this->selects)) {
84 $this->select('*');
85 }
86
87 $selects = [];
88
89 foreach ($this->selects as $i => $select) {
90 if ($select instanceof RawSQL) {
91 if ($i === 0) {
92 // If the first element is an instance of RawSQL
93 // then we don't need the starting SELECT keyword because we assume that the dev will include that in RawSQL
94 $this->includeSelectKeyword = false;
95 }
96 $selects[] = $select->sql;
97 continue;
98 }
99
100 if ($select->alias) {
101 $selects[] = DB::prepare(
102 '%1s AS %2s',
103 $select->column,
104 $select->alias
105 );
106
107 continue;
108 }
109
110 $selects[] = DB::prepare('%1s', $select->column);
111 }
112
113 $selectStatements = implode(', ', $selects);
114
115 if ($this->includeSelectKeyword) {
116 $keyword = 'SELECT ';
117
118 if ($this->distinct) {
119 $keyword .= 'DISTINCT ';
120 }
121
122 return [$keyword . $selectStatements];
123 }
124
125 return [$selectStatements];
126 }
127 }
128