[limb-svn] r6044 - in 3.x/trunk/limb/dbal: src/criteria tests/cases/non-driver/criteria
svn at limb-project.com
svn at limb-project.com
Mon Jul 2 17:39:54 MSD 2007
Author: pachanga
Date: 2007-07-02 17:39:54 +0400 (Mon, 02 Jul 2007)
New Revision: 6044
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6044
Modified:
3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php
3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php
3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php
Log:
-- convenience static factory methods added into lmbSQLCriteria:
* not($criteria) - negates criteria
* in($field, $values) - returns in criteria for field
* equal($field, $value) - returns equal criteria for field
* like($field, $value) - return like criteria for field
* between($field, $values) - returns between criteria for field
* isNull($field) - returns is null criteria for field
Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php 2007-07-02 12:54:09 UTC (rev 6043)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLBaseCriteria.class.php 2007-07-02 13:39:54 UTC (rev 6044)
@@ -1,20 +1,20 @@
<?php
-/*
- * Limb PHP Framework
- *
- * @link http://limb-project.com
- * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
- * @license LGPL http://www.gnu.org/copyleft/lesser.html
+/*
+ * Limb PHP Framework
+ *
+ * @link http://limb-project.com
+ * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com)
+ * @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
//inspired by Propel Criteria(http://propel.phpdb.org)
-lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
-
+lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
+
/**
* abstract class lmbSQLBaseCriteria.
*
* @package dbal
* @version $Id$
- */
+ */
abstract class lmbSQLBaseCriteria
{
const _AND_ = " AND ";
@@ -31,6 +31,11 @@
return $this;
}
+ function add($criteria)
+ {
+ return $this->addAnd($criteria);
+ }
+
function addOr($criteria)
{
$this->clauses[] = lmbSQLCriteria :: objectify($criteria);
Modified: 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php
===================================================================
--- 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php 2007-07-02 12:54:09 UTC (rev 6043)
+++ 3.x/trunk/limb/dbal/src/criteria/lmbSQLCriteria.class.php 2007-07-02 13:39:54 UTC (rev 6044)
@@ -7,6 +7,8 @@
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
lmb_require(dirname(__FILE__) . '/lmbSQLRawCriteria.class.php');
+lmb_require(dirname(__FILE__) . '/lmbSQLFieldBetweenCriteria.class.php');
+lmb_require(dirname(__FILE__) . '/lmbSQLFieldCriteria.class.php');
/**
* class lmbSQLCriteria.
@@ -24,6 +26,44 @@
parent :: __construct($raw_criteria, $values);
}
+ /**
+ * Used for chaining
+ */
+ static function create($raw_criteria = '', $values = array())
+ {
+ return new lmbSQLCriteria($raw_criteria, $values);
+ }
+
+ static function not($criteria)
+ {
+ return new lmbSQLCriteria('!(' . self :: objectify($criteria)->toStatementString() . ')');
+ }
+
+ static function between($column, $value_from, $value_to)
+ {
+ return new lmbSQLFieldBetweenCriteria($column, $value_from, $value_to);
+ }
+
+ static function in($column, $value)
+ {
+ return new lmbSQLFieldCriteria($column, $value, lmbSQLFieldCriteria :: IN);
+ }
+
+ static function equal($column, $value)
+ {
+ return new lmbSQLFieldCriteria($column, $value, lmbSQLFieldCriteria :: EQUAL);
+ }
+
+ static function like($column, $value)
+ {
+ return new lmbSQLFieldCriteria($column, $value, lmbSQLFieldCriteria :: LIKE);
+ }
+
+ static function isNull($column)
+ {
+ return new lmbSQLFieldCriteria($column, null, lmbSQLFieldCriteria :: IS_NULL);
+ }
+
static function objectify($args)
{
if(is_null($args))
Modified: 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php
===================================================================
--- 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php 2007-07-02 12:54:09 UTC (rev 6043)
+++ 3.x/trunk/limb/dbal/tests/cases/non-driver/criteria/lmbSQLCriteriaTest.class.php 2007-07-02 13:39:54 UTC (rev 6044)
@@ -7,7 +7,6 @@
* @license LGPL http://www.gnu.org/copyleft/lesser.html
*/
lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
-lmb_require('limb/dbal/src/criteria/lmbSQLCriteria.class.php');
class lmbSQLCriteriaTest extends UnitTestCase
{
@@ -34,6 +33,48 @@
$criteria = new lmbSQLCriteria('2 = 2');
$this->assertEqual($criteria->toStatementString(), '2 = 2');
}
+
+ function testCreate()
+ {
+ $criteria = lmbSQLCriteria :: create('2 = 2');
+ $this->assertEqual($criteria->toStatementString(), '2 = 2');
+ }
+
+ function testNot()
+ {
+ $criteria = lmbSQLCriteria :: not(new lmbSQLRawCriteria("id = 1"));
+ $this->assertEqual($criteria->toStatementString(), "!(id = 1)");
+ }
+
+ function testBetween()
+ {
+ $criteria = lmbSQLCriteria :: between('id', 1, 100);
+ $this->assertEqual($criteria, new lmbSQLFieldBetweenCriteria('id', 1, 100));
+ }
+
+ function testIn()
+ {
+ $criteria = lmbSQLCriteria :: in('id', array(1, 2));
+ $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', array(1, 2), lmbSQLFieldCriteria :: IN));
+ }
+
+ function testEqual()
+ {
+ $criteria = lmbSQLCriteria :: equal('id', 1);
+ $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', 1, lmbSQLFieldCriteria :: EQUAL));
+ }
+
+ function testLike()
+ {
+ $criteria = lmbSQLCriteria :: like('id', '%foo%');
+ $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', '%foo%', lmbSQLFieldCriteria :: LIKE));
+ }
+
+ function testIsNull()
+ {
+ $criteria = lmbSQLCriteria :: isNull('id');
+ $this->assertEqual($criteria, new lmbSQLFieldCriteria('id', null, lmbSQLFieldCriteria :: IS_NULL));
+ }
}
?>
More information about the limb-svn
mailing list