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
cc09204a
Commit
cc09204a
authored
Oct 30, 2011
by
Benjamin Eberlei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'DBAL-172' into 2.1.x
parents
7df036a6
fa092140
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
234 additions
and
166 deletions
+234
-166
QueryBuilder.php
lib/Doctrine/DBAL/Query/QueryBuilder.php
+42
-35
QueryException.php
lib/Doctrine/DBAL/Query/QueryException.php
+40
-0
QueryBuilderTest.php
tests/Doctrine/Tests/DBAL/Query/QueryBuilderTest.php
+152
-131
No files found.
lib/Doctrine/DBAL/Query/QueryBuilder.php
View file @
cc09204a
...
...
@@ -963,7 +963,14 @@ class QueryBuilder
}
}
$fromClauses
[]
=
$fromClause
;
$fromClauses
[
$from
[
'alias'
]]
=
$fromClause
;
}
// loop through all JOIN clasues for validation purpose
foreach
(
$this
->
sqlParts
[
'join'
]
as
$fromAlias
=>
$joins
)
{
if
(
!
isset
(
$fromClauses
[
$fromAlias
])
)
{
throw
QueryException
::
unknownFromAlias
(
$fromAlias
,
array_keys
(
$fromClauses
));
}
}
$query
.=
implode
(
', '
,
$fromClauses
)
...
...
lib/Doctrine/DBAL/Query/QueryException.php
0 → 100644
View file @
cc09204a
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\DBAL\Query
;
use
Doctrine\DBAL\DBALException
;
/**
* Driver interface.
* Interface that all DBAL drivers must implement.
*
* @since 2.1.4
*/
class
QueryException
extends
DBALException
{
static
public
function
unknownFromAlias
(
$alias
,
$registeredAliases
)
{
return
new
self
(
"The given alias '"
.
$alias
.
"' is not part of "
.
"any FROM clause table. The currently registered FROM-clause "
.
"aliases are: "
.
implode
(
", "
,
$registeredAliases
)
.
". Join clauses "
.
"are bound to from clauses to provide support for mixing of multiple "
.
"from and join clauses."
);
}
}
\ No newline at end of file
tests/Doctrine/Tests/DBAL/Query/QueryBuilderTest.php
View file @
cc09204a
...
...
@@ -548,4 +548,25 @@ class QueryBuilderTest extends \Doctrine\Tests\DbalTestCase
$this
->
assertEquals
(
'SELECT u.* FROM users u WHERE u.name = ?'
,
(
string
)
$qb
);
$this
->
assertEquals
(
10
,
$qb
->
getParameter
(
1
));
}
/**
* @group DBAL-172
*/
public
function
testReferenceJoinFromJoin
()
{
$qb
=
new
QueryBuilder
(
$this
->
conn
);
$qb
->
select
(
"l.id"
,
"mdsh.xcode"
,
"mdso.xcode"
)
->
from
(
"location_tree"
,
"l"
)
->
join
(
"l"
,
"location_tree_pos"
,
"p"
,
"l.id = p.tree_id"
)
->
rightJoin
(
"l"
,
"hotel"
,
"h"
,
"h.location_id = l.id"
)
->
leftJoin
(
"l"
,
"offer_location"
,
"ol"
,
"l.id=ol.location_id"
)
->
leftJoin
(
"ol"
,
"mds_offer"
,
"mdso"
,
"ol.offer_id = mdso.offer_id"
)
->
leftJoin
(
"h"
,
"mds_hotel"
,
"mdsh"
,
"h.id = mdsh.hotel_id"
)
->
where
(
"p.parent_id IN (:ids)"
)
->
andWhere
(
"(mdso.xcode IS NOT NULL OR mdsh.xcode IS NOT NULL)"
);
$this
->
setExpectedException
(
'Doctrine\DBAL\Query\QueryException'
,
"The given alias 'ol' is not part of any FROM clause table. The currently registered FROM-clause aliases are: l"
);
$this
->
assertEquals
(
''
,
$qb
->
getSQL
());
}
}
\ No newline at end of file
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