Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
c1744d2e
Commit
c1744d2e
authored
Aug 06, 2009
by
guilhermeblanco
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2.0] Added missing quoteIdentifiers to SqlWalker
parent
88698c3a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
46 deletions
+87
-46
SqlWalker.php
lib/Doctrine/ORM/Query/SqlWalker.php
+87
-46
No files found.
lib/Doctrine/ORM/Query/SqlWalker.php
View file @
c1744d2e
...
...
@@ -183,7 +183,8 @@ class SqlWalker implements TreeWalker
$tblAlias
=
$this
->
getSqlTableAlias
(
$rootClass
->
getTableName
(),
$dqlAlias
);
$discrColumn
=
$rootClass
->
discriminatorColumn
;
$columnAlias
=
$this
->
getSqlColumnAlias
(
$discrColumn
[
'name'
]);
$sql
.=
",
$tblAlias
."
.
$discrColumn
[
'name'
]
.
' AS '
.
$columnAlias
;
$sql
.=
",
$tblAlias
."
.
$this
->
_conn
->
quoteIdentifier
(
$discrColumn
[
'name'
])
.
' AS '
.
$columnAlias
;
$this
->
_rsm
->
setDiscriminatorColumn
(
$dqlAlias
,
$columnAlias
);
$this
->
_rsm
->
addMetaResult
(
$dqlAlias
,
$columnAlias
,
$discrColumn
[
'fieldName'
]);
...
...
@@ -209,7 +210,8 @@ class SqlWalker implements TreeWalker
$this
->
_currentRootAlias
=
$dqlAlias
;
$class
=
$rangeDecl
->
getClassMetadata
();
$sql
.=
$class
->
getTableName
()
.
' '
.
$this
->
getSqlTableAlias
(
$class
->
getTableName
(),
$dqlAlias
);
$sql
.=
$this
->
_conn
->
quoteIdentifier
(
$class
->
getTableName
())
.
' '
.
$this
->
getSqlTableAlias
(
$class
->
getTableName
(),
$dqlAlias
);
if
(
$class
->
isInheritanceTypeJoined
())
{
$sql
.=
$this
->
_generateClassTableInheritanceJoins
(
$class
,
$dqlAlias
);
...
...
@@ -254,15 +256,15 @@ class SqlWalker implements TreeWalker
*/
public
function
walkOrderByItem
(
$orderByItem
)
{
//TODO: support general SingleValuedPathExpression, not just state field
$expr
=
$orderByItem
->
getExpression
();
$parts
=
$expr
->
getParts
();
$dqlAlias
=
$expr
->
getIdentificationVariable
();
$qComp
=
$this
->
_queryComponents
[
$dqlAlias
];
$columnName
=
$qComp
[
'metadata'
]
->
getColumnName
(
$parts
[
0
]);
$sql
=
$this
->
getSqlTableAlias
(
$qComp
[
'metadata'
]
->
getTableName
(),
$dqlAlias
)
.
'.'
.
$columnName
;
$sql
.=
$orderByItem
->
isDesc
()
?
' DESC'
:
' ASC'
;
$sql
=
$this
->
getSqlTableAlias
(
$qComp
[
'metadata'
]
->
getTableName
(),
$dqlAlias
)
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$columnName
)
.
(
$orderByItem
->
isDesc
()
?
' DESC'
:
' ASC'
);
return
$sql
;
}
...
...
@@ -306,7 +308,9 @@ class SqlWalker implements TreeWalker
$targetTableName
=
$targetQComp
[
'metadata'
]
->
getTableName
();
$targetTableAlias
=
$this
->
getSqlTableAlias
(
$targetTableName
,
$joinedDqlAlias
);
$sourceTableAlias
=
$this
->
getSqlTableAlias
(
$sourceQComp
[
'metadata'
]
->
getTableName
(),
$joinAssocPathExpr
->
getIdentificationVariable
());
$sourceTableAlias
=
$this
->
getSqlTableAlias
(
$sourceQComp
[
'metadata'
]
->
getTableName
(),
$joinAssocPathExpr
->
getIdentificationVariable
()
);
// Ensure we got the owning side, since it has all mapping info
if
(
!
$targetQComp
[
'relation'
]
->
isOwningSide
())
{
...
...
@@ -316,7 +320,7 @@ class SqlWalker implements TreeWalker
}
if
(
$assoc
->
isOneToOne
())
{
$sql
.=
$t
argetTableName
.
' '
.
$targetTableAlias
.
' ON '
;
$sql
.=
$t
his
->
_conn
->
quoteIdentifier
(
$targetTableName
)
.
' '
.
$targetTableAlias
.
' ON '
;
$joinColumns
=
$assoc
->
getSourceToTargetKeyColumns
();
$first
=
true
;
foreach
(
$joinColumns
as
$sourceColumn
=>
$targetColumn
)
{
...
...
@@ -327,46 +331,59 @@ class SqlWalker implements TreeWalker
}
if
(
$targetQComp
[
'relation'
]
->
isOwningSide
())
{
$sql
.=
"
$sourceTableAlias
.
$sourceColumn
=
$targetTableAlias
.
$targetColumn
"
;
$sql
.=
$sourceTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$sourceColumn
)
.
' = '
.
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$targetColumn
);
}
else
{
$sql
.=
"
$sourceTableAlias
.
$targetColumn
=
$targetTableAlias
.
$sourceColumn
"
;
$sql
.=
$sourceTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$targetColumn
)
.
' = '
.
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$sourceColumn
);
}
}
}
else
if
(
$assoc
->
isManyToMany
())
{
// Join relation table
$joinTable
=
$assoc
->
getJoinTable
();
$joinTableAlias
=
$this
->
getSqlTableAlias
(
$joinTable
[
'name'
]);
$sql
.=
$
joinTable
[
'name'
]
.
' '
.
$joinTableAlias
.
' ON '
;
$sql
.=
$
this
->
_conn
->
quoteIdentifier
(
$joinTable
[
'name'
])
.
' '
.
$joinTableAlias
.
' ON '
;
if
(
$targetQComp
[
'relation'
]
->
isOwningSide
)
{
$sourceToRelationJoinColumns
=
$assoc
->
getSourceToRelationKeyColumns
();
foreach
(
$sourceToRelationJoinColumns
as
$sourceColumn
=>
$relationColumn
)
{
$sql
.=
"
$sourceTableAlias
.
$sourceColumn
=
$joinTableAlias
.
$relationColumn
"
;
$sql
.=
$sourceTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$sourceColumn
)
.
' = '
.
$joinTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$relationColumn
);
}
}
else
{
$targetToRelationJoinColumns
=
$assoc
->
getTargetToRelationKeyColumns
();
foreach
(
$targetToRelationJoinColumns
as
$targetColumn
=>
$relationColumn
)
{
$sql
.=
"
$sourceTableAlias
.
$targetColumn
=
$joinTableAlias
.
$relationColumn
"
;
$sql
.=
$sourceTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$targetColumn
)
.
' = '
.
$joinTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$relationColumn
);
}
}
// Join target table
$sql
.=
((
$joinType
==
AST\Join
::
JOIN_TYPE_LEFT
||
$joinType
==
AST\Join
::
JOIN_TYPE_LEFTOUTER
)
?
' LEFT JOIN '
:
' INNER JOIN '
)
.
$targetTableName
.
' '
.
$targetTableAlias
.
' ON '
;
$sql
.=
(
$joinType
==
AST\Join
::
JOIN_TYPE_LEFT
||
$joinType
==
AST\Join
::
JOIN_TYPE_LEFTOUTER
)
?
' LEFT JOIN '
:
' INNER JOIN '
;
$sql
.=
$this
->
_conn
->
quoteIdentifier
(
$targetTableName
)
.
' '
.
$targetTableAlias
.
' ON '
;
if
(
$targetQComp
[
'relation'
]
->
isOwningSide
)
{
$targetToRelationJoinColumns
=
$assoc
->
getTargetToRelationKeyColumns
();
foreach
(
$targetToRelationJoinColumns
as
$targetColumn
=>
$relationColumn
)
{
$sql
.=
"
$targetTableAlias
.
$targetColumn
=
$joinTableAlias
.
$relationColumn
"
;
$sql
.=
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$targetColumn
)
.
' = '
.
$joinTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$relationColumn
);
}
}
else
{
$sourceToRelationJoinColumns
=
$assoc
->
getSourceToRelationKeyColumns
();
foreach
(
$sourceToRelationJoinColumns
as
$sourceColumn
=>
$relationColumn
)
{
$sql
.=
"
$targetTableAlias
.
$sourceColumn
=
$joinTableAlias
.
$relationColumn
"
;
$sql
.=
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$sourceColumn
)
.
' = '
.
$joinTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$relationColumn
);
}
}
}
...
...
@@ -410,7 +427,8 @@ class SqlWalker implements TreeWalker
$sqlTableAlias
=
$this
->
getSqlTableAlias
(
$class
->
getTableName
(),
$dqlAlias
);
$columnName
=
$class
->
getColumnName
(
$fieldName
);
$columnAlias
=
$this
->
getSqlColumnAlias
(
$columnName
);
$sql
.=
$sqlTableAlias
.
'.'
.
$columnName
.
' AS '
.
$columnAlias
;
$sql
.=
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$columnName
)
.
' AS '
.
$columnAlias
;
$this
->
_rsm
->
addFieldResult
(
$dqlAlias
,
$columnAlias
,
$fieldName
);
}
else
{
...
...
@@ -464,7 +482,8 @@ class SqlWalker implements TreeWalker
$sqlTableAlias
=
$this
->
getSqlTableAlias
(
$tableName
,
$dqlAlias
);
$columnAlias
=
$this
->
getSqlColumnAlias
(
$mapping
[
'columnName'
]);
$sql
.=
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$mapping
[
'columnName'
])
.
' AS '
.
$columnAlias
;
$sql
.=
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$mapping
[
'columnName'
])
.
' AS '
.
$columnAlias
;
$this
->
_rsm
->
addFieldResult
(
$dqlAlias
,
$columnAlias
,
$fieldName
);
}
...
...
@@ -482,7 +501,8 @@ class SqlWalker implements TreeWalker
$sqlTableAlias
=
$this
->
getSqlTableAlias
(
$subClass
->
primaryTable
[
'name'
],
$dqlAlias
);
$columnAlias
=
$this
->
getSqlColumnAlias
(
$mapping
[
'columnName'
]);
$sql
.=
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$mapping
[
'columnName'
])
.
' AS '
.
$columnAlias
;
$sql
.=
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$mapping
[
'columnName'
])
.
' AS '
.
$columnAlias
;
$this
->
_rsm
->
addFieldResult
(
$dqlAlias
,
$columnAlias
,
$fieldName
);
}
...
...
@@ -503,7 +523,8 @@ class SqlWalker implements TreeWalker
if
(
$beginning
)
$beginning
=
false
;
else
$sql
.=
', '
;
$columnAlias
=
$this
->
getSqlColumnAlias
(
$mapping
[
'columnName'
]);
$sql
.=
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$mapping
[
'columnName'
])
.
' AS '
.
$columnAlias
;
$sql
.=
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$mapping
[
'columnName'
])
.
' AS '
.
$columnAlias
;
$this
->
_rsm
->
addFieldResult
(
$dqlAlias
,
$columnAlias
,
$fieldName
);
}
...
...
@@ -520,7 +541,8 @@ class SqlWalker implements TreeWalker
if
(
$assoc
->
isOwningSide
&&
$assoc
->
isOneToOne
())
{
foreach
(
$assoc
->
targetToSourceKeyColumns
as
$srcColumn
)
{
$columnAlias
=
$this
->
getSqlColumnAlias
(
$srcColumn
);
$sql
.=
', '
.
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$srcColumn
)
.
' AS '
.
$columnAlias
;
$sql
.=
', '
.
$sqlTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$srcColumn
)
.
' AS '
.
$columnAlias
;
$this
->
_rsm
->
addMetaResult
(
$dqlAlias
,
$columnAlias
,
$srcColumn
);
}
...
...
@@ -586,8 +608,9 @@ class SqlWalker implements TreeWalker
$identificationVarDecls
=
$subselectFromClause
->
getSubselectIdentificationVariableDeclarations
();
$firstIdentificationVarDecl
=
$identificationVarDecls
[
0
];
$rangeDecl
=
$firstIdentificationVarDecl
->
getRangeVariableDeclaration
();
$sql
.=
$rangeDecl
->
getClassMetadata
()
->
getTableName
()
.
' '
.
$this
->
getSqlTableAlias
(
$rangeDecl
->
getClassMetadata
()
->
getTableName
(),
$rangeDecl
->
getAliasIdentificationVariable
());
$sql
.=
$this
->
_conn
->
quoteIdentifier
(
$rangeDecl
->
getClassMetadata
()
->
getTableName
())
.
' '
.
$this
->
getSqlTableAlias
(
$rangeDecl
->
getClassMetadata
()
->
getTableName
(),
$rangeDecl
->
getAliasIdentificationVariable
());
foreach
(
$firstIdentificationVarDecl
->
getJoinVariableDeclarations
()
as
$joinVarDecl
)
{
$sql
.=
$this
->
walkJoinVariableDeclaration
(
$joinVarDecl
);
...
...
@@ -643,7 +666,7 @@ class SqlWalker implements TreeWalker
// in a subquery?
$class
=
$this
->
_queryComponents
[
$expr
][
'metadata'
];
$sql
.=
' '
.
$this
->
getSqlTableAlias
(
$class
->
getTableName
(),
$expr
)
.
'.'
;
$sql
.=
$
class
->
getColumnName
(
$class
->
identifier
[
0
]
);
$sql
.=
$
this
->
_conn
->
quoteIdentifier
(
$class
->
getColumnName
(
$class
->
identifier
[
0
])
);
}
return
$sql
;
...
...
@@ -669,8 +692,8 @@ class SqlWalker implements TreeWalker
if
(
$aggExpression
->
isDistinct
())
$sql
.=
'DISTINCT '
;
$sql
.=
$this
->
getSqlTableAlias
(
$qComp
[
'metadata'
]
->
getTableName
(),
$dqlAlias
)
.
'.'
.
$columnName
;
$sql
.=
')'
;
$sql
.=
$this
->
getSqlTableAlias
(
$qComp
[
'metadata'
]
->
getTableName
(),
$dqlAlias
)
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$columnName
)
.
')'
;
return
$sql
;
}
...
...
@@ -696,13 +719,13 @@ class SqlWalker implements TreeWalker
*/
public
function
walkGroupByItem
(
AST\PathExpression
$pathExpr
)
{
//TODO: support general SingleValuedPathExpression, not just state field
$parts
=
$pathExpr
->
getParts
();
$dqlAlias
=
$pathExpr
->
getIdentificationVariable
();
$qComp
=
$this
->
_queryComponents
[
$dqlAlias
];
$columnName
=
$qComp
[
'metadata'
]
->
getColumnName
(
$parts
[
0
]);
return
$this
->
getSqlTableAlias
(
$qComp
[
'metadata'
]
->
getTableName
(),
$dqlAlias
)
.
'.'
.
$columnName
;
return
$this
->
getSqlTableAlias
(
$qComp
[
'metadata'
]
->
getTableName
(),
$dqlAlias
)
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$columnName
);
}
/**
...
...
@@ -713,7 +736,7 @@ class SqlWalker implements TreeWalker
*/
public
function
walkUpdateStatement
(
AST\UpdateStatement
$AST
)
{
$this
->
_useSqlTableAliases
=
false
;
// TODO: Ask platform instead?
$this
->
_useSqlTableAliases
=
false
;
$sql
=
$this
->
walkUpdateClause
(
$AST
->
getUpdateClause
());
if
(
$whereClause
=
$AST
->
getWhereClause
())
{
...
...
@@ -733,7 +756,7 @@ class SqlWalker implements TreeWalker
*/
public
function
walkDeleteStatement
(
AST\DeleteStatement
$AST
)
{
$this
->
_useSqlTableAliases
=
false
;
// TODO: Ask platform instead?
$this
->
_useSqlTableAliases
=
false
;
$sql
=
$this
->
walkDeleteClause
(
$AST
->
getDeleteClause
());
if
(
$whereClause
=
$AST
->
getWhereClause
())
{
...
...
@@ -755,7 +778,7 @@ class SqlWalker implements TreeWalker
{
$sql
=
'DELETE FROM '
;
$class
=
$this
->
_em
->
getClassMetadata
(
$deleteClause
->
getAbstractSchemaName
());
$sql
.=
$
class
->
getTableName
(
);
$sql
.=
$
this
->
_conn
->
quoteIdentifier
(
$class
->
getTableName
()
);
if
(
$this
->
_useSqlTableAliases
)
{
$sql
.=
' '
.
$this
->
getSqlTableAlias
(
$class
->
getTableName
());
...
...
@@ -776,7 +799,7 @@ class SqlWalker implements TreeWalker
{
$sql
=
'UPDATE '
;
$class
=
$this
->
_em
->
getClassMetadata
(
$updateClause
->
getAbstractSchemaName
());
$sql
.=
$
class
->
getTableName
(
);
$sql
.=
$
this
->
_conn
->
quoteIdentifier
(
$class
->
getTableName
()
);
if
(
$this
->
_useSqlTableAliases
)
{
$sql
.=
' '
.
$this
->
getSqlTableAlias
(
$class
->
getTableName
());
...
...
@@ -810,7 +833,7 @@ class SqlWalker implements TreeWalker
$sql
.=
$this
->
getSqlTableAlias
(
$qComp
[
'metadata'
]
->
getTableName
())
.
'.'
;
}
$sql
.=
$
qComp
[
'metadata'
]
->
getColumnName
(
$updateItem
->
getField
(
))
.
' = '
;
$sql
.=
$
this
->
_conn
->
quoteIdentifier
(
$qComp
[
'metadata'
]
->
getColumnName
(
$updateItem
->
getField
()
))
.
' = '
;
$newValue
=
$updateItem
->
getNewValue
();
...
...
@@ -881,7 +904,7 @@ class SqlWalker implements TreeWalker
$sql
.=
$this
->
getSqlTableAlias
(
$class
->
getTableName
(),
$dqlAlias
)
.
'.'
;
}
$sql
.=
$
discrColumn
[
'name'
]
.
' IN ('
.
implode
(
', '
,
$values
)
.
')'
;
$sql
.=
$
this
->
_conn
->
quoteIdentifier
(
$discrColumn
[
'name'
])
.
' IN ('
.
implode
(
', '
,
$values
)
.
')'
;
}
}
...
...
@@ -970,13 +993,14 @@ class SqlWalker implements TreeWalker
}
$assoc
=
$class
->
associationMappings
[
$parts
[
0
]];
if
(
$assoc
->
isOneToMany
())
{
$targetClass
=
$this
->
_em
->
getClassMetadata
(
$assoc
->
targetEntityName
);
$targetTableAlias
=
$this
->
getSqlTableAlias
(
$targetClass
->
primaryTable
[
'name'
]);
$sourceTableAlias
=
$this
->
getSqlTableAlias
(
$class
->
primaryTable
[
'name'
],
$dqlAlias
);
$sql
.=
$this
->
_conn
->
quoteIdentifier
(
$targetClass
->
primaryTable
[
'name'
])
.
' '
.
$targetTableAlias
.
' WHERE '
;
.
' '
.
$targetTableAlias
.
' WHERE '
;
$owningAssoc
=
$targetClass
->
associationMappings
[
$assoc
->
mappedByFieldName
];
...
...
@@ -985,7 +1009,9 @@ class SqlWalker implements TreeWalker
foreach
(
$owningAssoc
->
targetToSourceKeyColumns
as
$targetColumn
=>
$sourceColumn
)
{
if
(
$first
)
$first
=
false
;
else
$sql
.=
' AND '
;
$sql
.=
$sourceTableAlias
.
'.'
.
$targetColumn
.
' = '
.
$targetTableAlias
.
'.'
.
$sourceColumn
;
$sql
.=
$sourceTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$targetColumn
)
.
' = '
.
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$sourceColumn
);
}
$sql
.=
' AND '
;
...
...
@@ -995,7 +1021,8 @@ class SqlWalker implements TreeWalker
if
(
$first
)
$first
=
false
;
else
$sql
.=
' AND '
;
$this
->
_parserResult
->
addParameterMapping
(
$dqlParamKey
,
$this
->
_sqlParamIndex
++
);
$sql
.=
$targetTableAlias
.
'.'
.
$targetClass
->
columnNames
[
$idField
]
.
' = ?'
;
$sql
.=
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$targetClass
->
columnNames
[
$idField
])
.
' = ?'
;
}
}
else
{
// many-to-many
$targetClass
=
$this
->
_em
->
getClassMetadata
(
$assoc
->
targetEntityName
);
...
...
@@ -1017,7 +1044,9 @@ class SqlWalker implements TreeWalker
foreach
(
$joinColumns
as
$joinColumn
)
{
if
(
$first
)
$first
=
false
;
else
$sql
.=
' AND '
;
$sql
.=
$joinTableAlias
.
'.'
.
$joinColumn
[
'name'
]
.
' = '
.
$sourceTableAlias
.
'.'
.
$joinColumn
[
'referencedColumnName'
];
$sql
.=
$joinTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$joinColumn
[
'name'
])
.
' = '
.
$sourceTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$joinColumn
[
'referencedColumnName'
]);
}
$sql
.=
' WHERE '
;
...
...
@@ -1028,7 +1057,9 @@ class SqlWalker implements TreeWalker
foreach
(
$joinColumns
as
$joinColumn
)
{
if
(
$first
)
$first
=
false
;
else
$sql
.=
' AND '
;
$sql
.=
$joinTableAlias
.
'.'
.
$joinColumn
[
'name'
]
.
' = '
.
$targetTableAlias
.
'.'
.
$joinColumn
[
'referencedColumnName'
];
$sql
.=
$joinTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$joinColumn
[
'name'
])
.
' = '
.
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$joinColumn
[
'referencedColumnName'
]);
}
$sql
.=
' AND '
;
...
...
@@ -1038,7 +1069,8 @@ class SqlWalker implements TreeWalker
if
(
$first
)
$first
=
false
;
else
$sql
.=
' AND '
;
$this
->
_parserResult
->
addParameterMapping
(
$dqlParamKey
,
$this
->
_sqlParamIndex
++
);
$sql
.=
$targetTableAlias
.
'.'
.
$targetClass
->
columnNames
[
$idField
]
.
' = ?'
;
$sql
.=
$targetTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$targetClass
->
columnNames
[
$idField
])
.
' = ?'
;
}
}
...
...
@@ -1341,8 +1373,10 @@ class SqlWalker implements TreeWalker
if
(
$this
->
_useSqlTableAliases
)
{
if
(
$class
->
isInheritanceTypeJoined
()
&&
isset
(
$class
->
fieldMappings
[
$fieldName
][
'inherited'
]))
{
$sql
.=
$this
->
getSqlTableAlias
(
$this
->
_em
->
getClassMetadata
(
$class
->
fieldMappings
[
$fieldName
][
'inherited'
])
->
getTableName
(),
$dqlAlias
)
.
'.'
;
$sql
.=
$this
->
getSqlTableAlias
(
$this
->
_em
->
getClassMetadata
(
$class
->
fieldMappings
[
$fieldName
][
'inherited'
])
->
getTableName
(),
$dqlAlias
)
.
'.'
;
}
else
{
$sql
.=
$this
->
getSqlTableAlias
(
$class
->
getTableName
(),
$dqlAlias
)
.
'.'
;
}
...
...
@@ -1351,7 +1385,9 @@ class SqlWalker implements TreeWalker
if
(
isset
(
$class
->
associationMappings
[
$fieldName
]))
{
//FIXME: Inverse side support
//FIXME: Throw exception on composite key
$sql
.=
$class
->
associationMappings
[
$fieldName
]
->
joinColumns
[
0
][
'name'
];
$sql
.=
$this
->
_conn
->
quoteIdentifier
(
$class
->
associationMappings
[
$fieldName
]
->
joinColumns
[
0
][
'name'
]
);
}
else
{
$sql
.=
$this
->
_conn
->
quoteIdentifier
(
$class
->
getColumnName
(
$fieldName
));
}
...
...
@@ -1423,13 +1459,16 @@ class SqlWalker implements TreeWalker
foreach
(
$class
->
parentClasses
as
$parentClassName
)
{
$parentClass
=
$this
->
_em
->
getClassMetadata
(
$parentClassName
);
$tableAlias
=
$this
->
getSqlTableAlias
(
$parentClass
->
primaryTable
[
'name'
],
$dqlAlias
);
$sql
.=
' INNER JOIN '
.
$parentClass
->
primaryTable
[
'name'
]
.
' '
.
$tableAlias
.
' ON '
;
$sql
.=
' INNER JOIN '
.
$this
->
_conn
->
quoteIdentifier
(
$parentClass
->
primaryTable
[
'name'
])
.
' '
.
$tableAlias
.
' ON '
;
$first
=
true
;
foreach
(
$idColumns
as
$idColumn
)
{
if
(
$first
)
$first
=
false
;
else
$sql
.=
' AND '
;
$sql
.=
$baseTableAlias
.
'.'
.
$idColumn
.
' = '
.
$tableAlias
.
'.'
.
$idColumn
;
$sql
.=
$baseTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$idColumn
)
.
' = '
.
$tableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$idColumn
);
}
}
...
...
@@ -1443,7 +1482,9 @@ class SqlWalker implements TreeWalker
foreach
(
$idColumns
as
$idColumn
)
{
if
(
$first
)
$first
=
false
;
else
$sql
.=
' AND '
;
$sql
.=
$baseTableAlias
.
'.'
.
$idColumn
.
' = '
.
$tableAlias
.
'.'
.
$idColumn
;
$sql
.=
$baseTableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$idColumn
)
.
' = '
.
$tableAlias
.
'.'
.
$this
->
_conn
->
quoteIdentifier
(
$idColumn
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment