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 / JoinClause.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
JoinClause.php
168 lines
1 <?php
2
3 namespace Give\Framework\QueryBuilder\Concerns;
4
5 use Closure;
6 use Give\Framework\Database\DB;
7 use Give\Framework\QueryBuilder\JoinQueryBuilder;
8 use Give\Framework\QueryBuilder\Clauses\Join;
9 use Give\Framework\QueryBuilder\Clauses\RawSQL;
10
11 /**
12 * @since 2.19.0
13 */
14 trait JoinClause
15 {
16
17 /**
18 * @var Closure[]|RawSQL[]
19 */
20 protected $joins = [];
21
22 /**
23 * Method used to build advanced JOIN queries, Check README.md for more info.
24 * If you need to perform only simple JOINs with only one JOIN condition, then you don't need this method.
25 *
26 * @param Closure $callback The closure will receive a Give\Framework\QueryBuilder\JoinQueryBuilder instance
27 *
28 * @return $this
29 */
30 public function join($callback)
31 {
32 $this->joins[] = $callback;
33
34 return $this;
35 }
36
37 /**
38 * @param string|RawSQL $table
39 * @param string $column1
40 * @param string $column2
41 * @param string|null $alias
42 *
43 * @return $this
44 */
45 public function leftJoin($table, $column1, $column2, $alias = null)
46 {
47 $this->join(
48 function (JoinQueryBuilder $builder) use ($table, $column1, $column2, $alias) {
49 $builder
50 ->leftJoin($table, $alias)
51 ->on($column1, $column2);
52 }
53 );
54
55 return $this;
56 }
57
58 /**
59 * @param string|RawSQL $table
60 * @param string $column1
61 * @param string $column2
62 * @param string|null $alias
63 *
64 * @return $this
65 */
66 public function innerJoin($table, $column1, $column2, $alias = null)
67 {
68 $this->join(
69 function (JoinQueryBuilder $builder) use ($table, $column1, $column2, $alias) {
70 $builder
71 ->innerJoin($table, $alias)
72 ->on($column1, $column2);
73 }
74 );
75
76 return $this;
77 }
78
79 /**
80 * @param string|RawSQL $table
81 * @param string $column1
82 * @param string $column2
83 * @param string|null $alias
84 *
85 * @return $this
86 */
87 public function rightJoin($table, $column1, $column2, $alias = null)
88 {
89 $this->join(
90 function (JoinQueryBuilder $builder) use ($table, $column1, $column2, $alias) {
91 $builder
92 ->rightJoin($table, $alias)
93 ->on($column1, $column2);
94 }
95 );
96
97 return $this;
98 }
99
100
101 /**
102 * Add raw SQL JOIN clause
103 *
104 * @param string $sql
105 * @param ...$args
106 *
107 * @return $this;
108 */
109 public function joinRaw($sql, ...$args)
110 {
111 $this->joins[] = new RawSQL($sql, $args);
112
113 return $this;
114 }
115
116
117 /**
118 * @return string[]
119 */
120 protected function getJoinSQL()
121 {
122 return array_map(function ($callback) {
123 if ($callback instanceof RawSQL) {
124 return $callback->sql;
125 }
126
127 $builder = new JoinQueryBuilder();
128
129 call_user_func($callback, $builder);
130
131 $joins = array_map(function ($join) {
132 if ($join instanceof RawSQL) {
133 return $join->sql;
134 }
135
136 if ($join instanceof Join) {
137 if ($join->alias) {
138 return DB::prepare(
139 '%1s JOIN %2s %3s',
140 $join->joinType,
141 $join->table,
142 $join->alias
143 );
144 }
145
146 return DB::prepare(
147 '%1s JOIN %2s',
148 $join->joinType,
149 $join->table
150 );
151 }
152
153 // JoinCondition
154 return DB::prepare(
155 $join->quote
156 ? ' %1s %2s = %s'
157 : ' %1s %2s = %3s',
158 $join->logicalOperator,
159 $join->column1,
160 $join->column2
161 );
162 }, $builder->getDefinedJoins());
163
164 return implode(' ', $joins);
165 }, $this->joins);
166 }
167 }
168