PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 1.9.0
GiveWP – Donation Plugin and Fundraising Platform v1.9.0
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 / MetaQuery.php
give / src / Framework / QueryBuilder / Concerns Last commit date
Aggregate.php 4 years ago CRUD.php 4 years ago FromClause.php 4 years ago GroupByStatement.php 4 years ago HavingClause.php 4 years ago JoinClause.php 4 years ago LimitStatement.php 4 years ago MetaQuery.php 4 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 4 years ago
MetaQuery.php
111 lines
1 <?php
2
3 namespace Give\Framework\QueryBuilder\Concerns;
4
5 use Give\Framework\QueryBuilder\JoinQueryBuilder;
6 use Give\Framework\QueryBuilder\Clauses\MetaTable;
7 use Give\Framework\QueryBuilder\Clauses\RawSQL;
8 use Give\Framework\QueryBuilder\QueryBuilder;
9
10 /**
11 * @since 2.19.0
12 */
13 trait MetaQuery
14 {
15
16 /**
17 * @var MetaTable[]
18 */
19 private $metaTablesConfigs = [];
20
21 /**
22 * @var string
23 */
24 private $defaultMetaKeyColumn = 'meta_key';
25
26 /**
27 * @var string
28 */
29 private $defaultMetaValueColumn = 'meta_value';
30
31 /**
32 * @param string|RawSQL $table
33 * @param string $metaKeyColumn
34 * @param string $metaValueColumn
35 *
36 * @return $this
37 */
38 public function configureMetaTable($table, $metaKeyColumn, $metaValueColumn)
39 {
40 $this->metaTablesConfigs[] = new MetaTable(
41 $table,
42 $metaKeyColumn,
43 $metaValueColumn
44 );
45
46 return $this;
47 }
48
49 /**
50 * @param string|RawSQL $table
51 *
52 * @return MetaTable
53 */
54 protected function getMetaTable($table)
55 {
56 $tableName = QueryBuilder::prefixTable($table);
57
58 foreach ($this->metaTablesConfigs as $metaTable) {
59 if ($metaTable->tableName === $tableName) {
60 return $metaTable;
61 }
62 }
63
64 return new MetaTable(
65 $table,
66 $this->defaultMetaKeyColumn,
67 $this->defaultMetaValueColumn
68 );
69 }
70
71 /**
72 * Select meta columns
73 *
74 * @param string|RawSQL $table
75 * @param string $foreignKey
76 * @param string $primaryKey
77 * @param array $columns
78 *
79 * @return $this
80 */
81 public function attachMeta($table, $foreignKey, $primaryKey, ...$columns)
82 {
83 $metaTable = $this->getMetaTable($table);
84
85 foreach ($columns as $i => $entry) {
86 if (is_array($entry)) {
87 list ($column, $columnAlias) = $entry;
88 } else {
89 $column = $entry;
90 $columnAlias = null;
91 }
92
93 // Set dynamic alias
94 $tableAlias = sprintf('%s_%s_%d', ($table instanceof RawSQL) ? $table->sql : $table, 'attach_meta', $i);
95
96 $this->join(
97 function (JoinQueryBuilder $builder) use ($table, $foreignKey, $primaryKey, $tableAlias, $column, $metaTable) {
98 $builder
99 ->leftJoin($table, $tableAlias)
100 ->on($foreignKey, "{$tableAlias}.{$primaryKey}")
101 ->andOn("{$tableAlias}.{$metaTable->keyColumnName}", $column, true);
102 }
103 );
104
105 $this->select(["{$tableAlias}.{$metaTable->valueColumnName}", $columnAlias ? : $column]);
106 }
107
108 return $this;
109 }
110 }
111