FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
database/PostgresCompiler.php at 5.x · cakephp/database · GitHub
cakephp
/
database
Public
Notifications
You must be signed in to change notification settings
Fork
13
Star
98
Code
Actions
Security and quality
0
Insights
Additional navigation options
Code
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
database
/
PostgresCompiler.php
Copy path
More file actions
More file actions
Latest commit
History
History
History
96 lines (87 loc) · 2.86 KB
Breadcrumbs
database
/
PostgresCompiler.php
Copy path
File metadata and controls
96 lines (87 loc) · 2.86 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
declare
(strict_types=
1
);
/**
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
* @link https://cakephp.org CakePHP(tm) Project
* @since 4.0.3
* @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace
Cake
\
Database
;
use
Cake
\
Database
\
Expression
\
FunctionExpression
;
/**
* Responsible for compiling a Query object into its SQL representation
* for Postgres
*
* @internal
*/
class
PostgresCompiler
extends
QueryCompiler
{
/**
* Always quote aliases in SELECT clause.
*
* Postgres auto converts unquoted identifiers to lower case.
*
* @var bool
*/
protected
bool
$
_quotedSelectAliases
=
true
;
/**
* {@inheritDoc}
*
* @var array<string, string>
*/
protected
array
$
_templates
= [
'
delete
'
=>
'
DELETE
'
,
'
where
'
=>
'
WHERE %s
'
,
'
group
'
=>
'
GROUP BY %s
'
,
'
order
'
=>
'
%s
'
,
'
limit
'
=>
'
LIMIT %s
'
,
'
offset
'
=>
'
OFFSET %s
'
,
'
epilog
'
=>
'
%s
'
,
'
comment
'
=>
'
/* %s */
'
,
];
/**
* Helper function used to build the string representation of a HAVING clause,
* it constructs the field list taking care of aliasing and
* converting expression objects to string.
*
* @param array $parts list of fields to be transformed to string
* @param \Cake\Database\Query $query The query that is being compiled
* @param \Cake\Database\ValueBinder $binder Value binder used to generate parameter placeholder
* @return string
*/
protected
function
_buildHavingPart
(
array
$
parts
,
Query
$
query
,
ValueBinder
$
binder
):
string
{
$
selectParts
=
$
query
->
clause
(
'
select
'
);
foreach
(
$
selectParts
as
$
selectKey
=>
$
selectPart
) {
if
(!
$
selectPart
instanceof
FunctionExpression) {
continue
;
}
foreach
(
$
parts
as
$
k
=>
$
p
) {
if
(!
is_string
(
$
p
)) {
continue
;
}
preg_match_all
(
'
/\b
'
.
trim
(
$
selectKey
,
'
"
'
) .
'
\b/i
'
,
$
p
,
$
matches
,
);
if
(
empty
(
$
matches
[
0
])) {
continue
;
}
$
parts
[
$
k
] =
preg_replace
(
[
'
/"/
'
,
'
/\b
'
.
trim
(
$
selectKey
,
'
"
'
) .
'
\b/i
'
],
[
''
,
$
selectPart
->
sql
(
$
binder
)],
$
p
,
);
}
}
return
sprintf
(
'
HAVING %s
'
,
implode
(
'
,
'
,
$
parts
));
}
}
Back
|
FazBrowse Home
|
New Git URL