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
867a34d4
Commit
867a34d4
authored
Jul 09, 2009
by
jwage
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2.0] Initial commit of a QueryBuilder class. Still needs a lot of work.
parent
2ffc7f17
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1373 additions
and
0 deletions
+1373
-0
Expr.php
lib/Doctrine/ORM/Query/Expr.php
+483
-0
QueryBuilder.php
lib/Doctrine/ORM/QueryBuilder.php
+357
-0
AllTests.php
tests/Doctrine/Tests/ORM/AllTests.php
+1
-0
AllTests.php
tests/Doctrine/Tests/ORM/Query/AllTests.php
+1
-0
ExprTest.php
tests/Doctrine/Tests/ORM/Query/ExprTest.php
+231
-0
QueryBuilderTest.php
tests/Doctrine/Tests/ORM/QueryBuilderTest.php
+300
-0
No files found.
lib/Doctrine/ORM/Query/Expr.php
0 → 100644
View file @
867a34d4
This diff is collapsed.
Click to expand it.
lib/Doctrine/ORM/QueryBuilder.php
0 → 100644
View file @
867a34d4
This diff is collapsed.
Click to expand it.
tests/Doctrine/Tests/ORM/AllTests.php
View file @
867a34d4
...
...
@@ -31,6 +31,7 @@ class AllTests
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\UnitOfWorkTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\EntityManagerTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\CommitOrderCalculatorTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\QueryBuilderTest'
);
$suite
->
addTest
(
Query\AllTests
::
suite
());
$suite
->
addTest
(
Hydration\AllTests
::
suite
());
...
...
tests/Doctrine/Tests/ORM/Query/AllTests.php
View file @
867a34d4
...
...
@@ -24,6 +24,7 @@ class AllTests
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Query\LexerTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Query\DeleteSqlGenerationTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Query\UpdateSqlGenerationTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\ORM\Query\ExprTest'
);
return
$suite
;
}
...
...
tests/Doctrine/Tests/ORM/Query/ExprTest.php
0 → 100644
View file @
867a34d4
<?php
/*
* $Id$
*
* 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\Tests\ORM\Query
;
use
Doctrine\ORM\Query\Expr
;
use
Doctrine\ORM\Query
;
require_once
__DIR__
.
'/../../TestInit.php'
;
/**
* Test case for the DQL Expr class used for generating DQL snippets through
* a programmatic interface
*
* @author Jonathan H. Wage <jonwage@gmail.com>
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://www.phpdoctrine.org
* @since 2.0
* @version $Revision$
*/
class
ExprTest
extends
\Doctrine\Tests\OrmTestCase
{
private
$_em
;
protected
function
setUp
()
{
$this
->
_em
=
$this
->
_getTestEntityManager
();
}
public
function
testAvgExpr
()
{
$this
->
assertEquals
(
'AVG(u.id)'
,
(
string
)
Expr
::
avg
(
'u.id'
));
}
public
function
testMaxExpr
()
{
$this
->
assertEquals
(
'MAX(u.id)'
,
(
string
)
Expr
::
max
(
'u.id'
));
}
public
function
testMinExpr
()
{
$this
->
assertEquals
(
'MIN(u.id)'
,
(
string
)
Expr
::
min
(
'u.id'
));
}
public
function
testCountExpr
()
{
$this
->
assertEquals
(
'MAX(u.id)'
,
(
string
)
Expr
::
max
(
'u.id'
));
}
public
function
testCountDistinctExpr
()
{
$this
->
assertEquals
(
'COUNT(DISTINCT u.id)'
,
(
string
)
Expr
::
countDistinct
(
'u.id'
));
}
public
function
testExistsExpr
()
{
$this
->
assertEquals
(
'EXISTS(SUBQUERY)'
,
(
string
)
Expr
::
exists
(
'SUBQUERY'
));
}
public
function
testAllExpr
()
{
$this
->
assertEquals
(
'ALL(SUBQUERY)'
,
(
string
)
Expr
::
all
(
'SUBQUERY'
));
}
public
function
testSomeExpr
()
{
$this
->
assertEquals
(
'SOME(SUBQUERY)'
,
(
string
)
Expr
::
some
(
'SUBQUERY'
));
}
public
function
testAnyExpr
()
{
$this
->
assertEquals
(
'ANY(SUBQUERY)'
,
(
string
)
Expr
::
any
(
'SUBQUERY'
));
}
public
function
testNotExpr
()
{
$this
->
assertEquals
(
'NOT(SUBQUERY)'
,
(
string
)
Expr
::
not
(
'SUBQUERY'
));
}
public
function
testAndExpr
()
{
$this
->
assertEquals
(
'(1 = 1 AND 2 = 2)'
,
(
string
)
Expr
::
andx
((
string
)
Expr
::
eq
(
1
,
1
),
(
string
)
Expr
::
eq
(
2
,
2
)));
}
public
function
testOrExpr
()
{
$this
->
assertEquals
(
'(1 = 1 OR 2 = 2)'
,
(
string
)
Expr
::
orx
((
string
)
Expr
::
eq
(
1
,
1
),
(
string
)
Expr
::
eq
(
2
,
2
)));
}
public
function
testAbsExpr
()
{
$this
->
assertEquals
(
'ABS(1)'
,
(
string
)
Expr
::
abs
(
1
));
}
public
function
testProdExpr
()
{
$this
->
assertEquals
(
'(1 * 2)'
,
(
string
)
Expr
::
prod
(
1
,
2
));
}
public
function
testDiffExpr
()
{
$this
->
assertEquals
(
'(1 - 2)'
,
(
string
)
Expr
::
diff
(
1
,
2
));
}
public
function
testSumExpr
()
{
$this
->
assertEquals
(
'(1 + 2)'
,
(
string
)
Expr
::
sum
(
1
,
2
));
}
public
function
testQuotientExpr
()
{
$this
->
assertEquals
(
'(10 / 2)'
,
(
string
)
Expr
::
quot
(
10
,
2
));
}
public
function
testSquareRootExpr
()
{
$this
->
assertEquals
(
'SQRT(1)'
,
(
string
)
Expr
::
sqrt
(
1
));
}
public
function
testEqualExpr
()
{
$this
->
assertEquals
(
'1 = 1'
,
(
string
)
Expr
::
eq
(
1
,
1
));
}
public
function
testNotEqualExpr
()
{
$this
->
assertEquals
(
'1 != 2'
,
(
string
)
Expr
::
notEqual
(
1
,
2
));
}
public
function
testLikeExpr
()
{
$this
->
assertEquals
(
'(a.description LIKE :description)'
,
(
string
)
Expr
::
like
(
'a.description'
,
':description'
));
}
public
function
testConcatExpr
()
{
$this
->
assertEquals
(
'CONCAT(u.first_name, u.last_name)'
,
(
string
)
Expr
::
concat
(
'u.first_name'
,
'u.last_name'
));
}
public
function
testSubstrExpr
()
{
$this
->
assertEquals
(
'SUBSTR(a.title, 0, 25)'
,
(
string
)
Expr
::
substr
(
'a.title'
,
0
,
25
));
}
public
function
testLowerExpr
()
{
$this
->
assertEquals
(
'LOWER(u.first_name)'
,
(
string
)
Expr
::
lower
(
'u.first_name'
));
}
public
function
testUpperExpr
()
{
$this
->
assertEquals
(
'UPPER(u.first_name)'
,
(
string
)
Expr
::
upper
(
'u.first_name'
));
}
public
function
testLengthExpr
()
{
$this
->
assertEquals
(
'LENGTH(u.first_name)'
,
(
string
)
Expr
::
length
(
'u.first_name'
));
}
public
function
testGreaterThanExpr
()
{
$this
->
assertEquals
(
'5 > 2'
,
(
string
)
Expr
::
gt
(
5
,
2
));
$this
->
assertEquals
(
'5 > 2'
,
(
string
)
Expr
::
greaterThan
(
5
,
2
));
}
public
function
testLessThanExpr
()
{
$this
->
assertEquals
(
'2 < 5'
,
(
string
)
Expr
::
lt
(
2
,
5
));
$this
->
assertEquals
(
'2 < 5'
,
(
string
)
Expr
::
lessThan
(
2
,
5
));
}
public
function
testPathExpr
()
{
// TODO: This functionality still needs to be written and tested
}
public
function
testStringLiteralExpr
()
{
$this
->
assertEquals
(
"'word'"
,
(
string
)
Expr
::
literal
(
'word'
));
}
public
function
testNumericLiteralExpr
()
{
$this
->
assertEquals
(
5
,
(
string
)
Expr
::
literal
(
5
));
}
public
function
testGreaterThanOrEqualToExpr
()
{
$this
->
assertEquals
(
'5 >= 2'
,
(
string
)
Expr
::
gtoet
(
5
,
2
));
$this
->
assertEquals
(
'5 >= 2'
,
(
string
)
Expr
::
greaterThanOrEqualTo
(
5
,
2
));
}
public
function
testLessThanOrEqualTo
()
{
$this
->
assertEquals
(
'2 <= 5'
,
(
string
)
Expr
::
ltoet
(
2
,
5
));
$this
->
assertEquals
(
'2 <= 5'
,
(
string
)
Expr
::
lessThanOrEqualTo
(
2
,
5
));
}
public
function
testBetweenExpr
()
{
$this
->
assertEquals
(
'BETWEEN(u.id, 3, 6)'
,
(
string
)
Expr
::
between
(
'u.id'
,
3
,
6
));
}
public
function
testTrimExpr
()
{
$this
->
assertEquals
(
'TRIM(u.id)'
,
(
string
)
Expr
::
trim
(
'u.id'
));
}
public
function
testInExpr
()
{
$this
->
assertEquals
(
'u.id IN(1, 2, 3)'
,
(
string
)
Expr
::
in
(
'u.id'
,
array
(
1
,
2
,
3
)));
}
}
\ No newline at end of file
tests/Doctrine/Tests/ORM/QueryBuilderTest.php
0 → 100644
View file @
867a34d4
This diff is collapsed.
Click to expand it.
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