vendor/doctrine/lib/Doctrine/ORM/Query/Expr.php
author ymh <ymh.work@gmail.com>
Sat, 24 Sep 2011 15:40:41 +0200
changeset 0 7f95f8617b0b
permissions -rwxr-xr-x
first commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 * This software consists of voluntary contributions made by many individuals
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 * and is licensed under the LGPL. For more information, see
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 * <http://www.doctrine-project.org>.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
namespace Doctrine\ORM\Query;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
 * This class is used to generate DQL expressions via a set of PHP static functions
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
 * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
 * @link    www.doctrine-project.org
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
 * @since   2.0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
 * @author  Guilherme Blanco <guilhermeblanco@hotmail.com>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
 * @author  Jonathan Wage <jonwage@gmail.com>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
 * @author  Roman Borschel <roman@code-factory.org>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
 * @author  Benjamin Eberlei <kontakt@beberlei.de>
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
 * @todo Rename: ExpressionBuilder
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
class Expr
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
     * Creates a conjunction of the given boolean expressions.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
     * Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
     *     // (u.type = ?1) AND (u.role = ?2)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
     *     $expr->andX('u.type = ?1', 'u.role = ?2'));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
     * @param mixed $x Optional clause. Defaults = null, but requires
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
     *                 at least one defined when converting to string.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
     * @return Expr\Andx
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    public function andX($x = null)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
        return new Expr\Andx(func_get_args());
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
     * Creates a disjunction of the given boolean expressions.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
     * Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
     *     // (u.type = ?1) OR (u.role = ?2)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
     *     $q->where($q->expr()->orX('u.type = ?1', 'u.role = ?2'));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
     * @param mixed $x Optional clause. Defaults = null, but requires
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
     *                 at least one defined when converting to string.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
     * @return Expr\Orx
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
    public function orX($x = null)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
        return new Expr\Orx(func_get_args());
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
     * Creates an ASCending order expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
     * @param $sort
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
     * @return OrderBy
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    public function asc($expr)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
        return new Expr\OrderBy($expr, 'ASC');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
     * Creates a DESCending order expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
     * @param $sort
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
     * @return OrderBy
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    public function desc($expr)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
        return new Expr\OrderBy($expr, 'DESC');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
     * Creates an equality comparison expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
     * When converted to string, it will generated a <left expr> = <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
     *     // u.id = ?1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
     *     $expr->eq('u.id', '?1');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
     * @return Expr\Comparison
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
    public function eq($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
        return new Expr\Comparison($x, Expr\Comparison::EQ, $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
     * Creates an instance of Expr\Comparison, with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
     * When converted to string, it will generated a <left expr> <> <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
     *     // u.id <> ?1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
     *     $q->where($q->expr()->neq('u.id', '?1'));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
     * @return Expr\Comparison
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
    public function neq($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
        return new Expr\Comparison($x, Expr\Comparison::NEQ, $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
     * Creates an instance of Expr\Comparison, with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
     * When converted to string, it will generated a <left expr> < <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
     *     // u.id < ?1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
     *     $q->where($q->expr()->lt('u.id', '?1'));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
     * @return Expr\Comparison
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
    public function lt($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
        return new Expr\Comparison($x, Expr\Comparison::LT, $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
     * Creates an instance of Expr\Comparison, with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
     * When converted to string, it will generated a <left expr> <= <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
     *     // u.id <= ?1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
     *     $q->where($q->expr()->lte('u.id', '?1'));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
     * @return Expr\Comparison
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
    public function lte($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
        return new Expr\Comparison($x, Expr\Comparison::LTE, $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
     * Creates an instance of Expr\Comparison, with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
     * When converted to string, it will generated a <left expr> > <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
     *     // u.id > ?1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
     *     $q->where($q->expr()->gt('u.id', '?1'));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
     * @return Expr\Comparison
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
    public function gt($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
        return new Expr\Comparison($x, Expr\Comparison::GT, $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
     * Creates an instance of Expr\Comparison, with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
     * When converted to string, it will generated a <left expr> >= <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
     *     // u.id >= ?1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
     *     $q->where($q->expr()->gte('u.id', '?1'));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
     * @return Expr\Comparison
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
    public function gte($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
        return new Expr\Comparison($x, Expr\Comparison::GTE, $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
     * Creates an instance of AVG() function, with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
     * @param mixed $x Argument to be used in AVG() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
    public function avg($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
        return new Expr\Func('AVG', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
     * Creates an instance of MAX() function, with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
     * @param mixed $x Argument to be used in MAX() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
    public function max($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
        return new Expr\Func('MAX', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
     * Creates an instance of MIN() function, with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
     * @param mixed $x Argument to be used in MIN() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
    public function min($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
        return new Expr\Func('MIN', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
     * Creates an instance of COUNT() function, with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
     * @param mixed $x Argument to be used in COUNT() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
    public function count($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
        return new Expr\Func('COUNT', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
     * Creates an instance of COUNT(DISTINCT) function, with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
     * @param mixed $x Argument to be used in COUNT(DISTINCT) function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
     * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
    public function countDistinct($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
        return 'COUNT(DISTINCT ' . implode(', ', func_get_args()) . ')';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
     * Creates an instance of EXISTS() function, with the given DQL Subquery.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
     * @param mixed $subquery DQL Subquery to be used in EXISTS() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
    public function exists($subquery)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
        return new Expr\Func('EXISTS', array($subquery));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
     * Creates an instance of ALL() function, with the given DQL Subquery.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
     * @param mixed $subquery DQL Subquery to be used in ALL() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
    public function all($subquery)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
        return new Expr\Func('ALL', array($subquery));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
     * Creates a SOME() function expression with the given DQL subquery.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
     * @param mixed $subquery DQL Subquery to be used in SOME() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
    public function some($subquery)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
        return new Expr\Func('SOME', array($subquery));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
     * Creates an ANY() function expression with the given DQL subquery.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
     * @param mixed $subquery DQL Subquery to be used in ANY() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
    public function any($subquery)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
        return new Expr\Func('ANY', array($subquery));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
     * Creates a negation expression of the given restriction.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
     * @param mixed $restriction Restriction to be used in NOT() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
    public function not($restriction)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
        return new Expr\Func('NOT', array($restriction));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
     * Creates an ABS() function expression with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
     * @param mixed $x Argument to be used in ABS() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
    public function abs($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
        return new Expr\Func('ABS', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
     * Creates a product mathematical expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
     * When converted to string, it will generated a <left expr> * <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
     *     // u.salary * u.percentAnualSalaryIncrease
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
     *     $q->expr()->prod('u.salary', 'u.percentAnualSalaryIncrease')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
     * @return Expr\Math
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
    public function prod($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
        return new Expr\Math($x, '*', $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
     * Creates a difference mathematical expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
     * When converted to string, it will generated a <left expr> - <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
     *     // u.monthlySubscriptionCount - 1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
     *     $q->expr()->diff('u.monthlySubscriptionCount', '1')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
     * @return Expr\Math
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
    public function diff($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
        return new Expr\Math($x, '-', $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
     * Creates a sum mathematical expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
     * When converted to string, it will generated a <left expr> + <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
     *     // u.numChildren + 1
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
     *     $q->expr()->diff('u.numChildren', '1')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
     * @return Expr\Math
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
    public function sum($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
        return new Expr\Math($x, '+', $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
     * Creates a quotient mathematical expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
     * First argument is considered the left expression and the second is the right expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
     * When converted to string, it will generated a <left expr> / <right expr>. Example:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
     *     [php]
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
     *     // u.total / u.period
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
     *     $expr->quot('u.total', 'u.period')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
     * @param mixed $x Left expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
     * @param mixed $y Right expression
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
     * @return Expr\Math
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
    public function quot($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
        return new Expr\Math($x, '/', $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
     * Creates a SQRT() function expression with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
     * @param mixed $x Argument to be used in SQRT() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
    public function sqrt($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
        return new Expr\Func('SQRT', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
     * Creates an IN() expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
     * @param string $x Field in string format to be restricted by IN() function
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
     * @param mixed $y Argument to be used in IN() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
    public function in($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
        if (is_array($y)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
            foreach ($y as &$literal) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
                if ( ! ($literal instanceof Expr\Literal)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
                    $literal = $this->_quoteLiteral($literal);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
                }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
            }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
        return new Expr\Func($x . ' IN', (array) $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
     * Creates a NOT IN() expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
     * @param string $x Field in string format to be restricted by NOT IN() function
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
     * @param mixed $y Argument to be used in NOT IN() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
    public function notIn($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
        if (is_array($y)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
            foreach ($y as &$literal) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
                if ( ! ($literal instanceof Expr\Literal)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
                    $literal = $this->_quoteLiteral($literal);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
                }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
            }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
        return new Expr\Func($x . ' NOT IN', (array) $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
     * Creates an IS NULL expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
     * @param string $x Field in string format to be restricted by IS NULL
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
     * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
    public function isNull($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
        return $x . ' IS NULL';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
     * Creates an IS NOT NULL expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
     * @param string $x Field in string format to be restricted by IS NOT NULL
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
     * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
    public function isNotNull($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
        return $x . ' IS NOT NULL';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
     * Creates a LIKE() comparison expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
     * @param string $x Field in string format to be inspected by LIKE() comparison.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
     * @param mixed $y Argument to be used in LIKE() comparison.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
     * @return Expr\Comparison
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
    public function like($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
        return new Expr\Comparison($x, 'LIKE', $y);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
     * Creates a CONCAT() function expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
     * @param mixed $x First argument to be used in CONCAT() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
     * @param mixed $x Second argument to be used in CONCAT() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
    public function concat($x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
        return new Expr\Func('CONCAT', array($x, $y));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
     * Creates a SUBSTRING() function expression with the given arguments.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
     * @param mixed $x Argument to be used as string to be cropped by SUBSTRING() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
     * @param integer $from Initial offset to start cropping string. May accept negative values.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
     * @param integer $len Length of crop. May accept negative values.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
     * @return Expr\Func
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
    public function substring($x, $from, $len = null)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
        $args = array($x, $from);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
        if (null !== $len) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
            $args[] = $len;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
        return new Expr\Func('SUBSTRING', $args);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
     * Creates a LOWER() function expression with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
     * @param mixed $x Argument to be used in LOWER() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
     * @return Expr\Func A LOWER function expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
    public function lower($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
        return new Expr\Func('LOWER', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
     * Creates an UPPER() function expression with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
     * @param mixed $x Argument to be used in UPPER() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
     * @return Expr\Func An UPPER function expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
    public function upper($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
        return new Expr\Func('UPPER', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
     * Creates a LENGTH() function expression with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
     * @param mixed $x Argument to be used as argument of LENGTH() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
     * @return Expr\Func A LENGTH function expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
    public function length($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
        return new Expr\Func('LENGTH', array($x));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
     * Creates a literal expression of the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
     * @param mixed $literal Argument to be converted to literal.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
     * @return Expr\Literal
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
    public function literal($literal)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
        return new Expr\Literal($this->_quoteLiteral($literal));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
     * Quotes a literal value, if necessary, according to the DQL syntax.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
     * @param mixed $literal The literal value.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
     * @return string
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
    private function _quoteLiteral($literal)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
        if (is_numeric($literal) && !is_string($literal)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
            return (string) $literal;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
        } else {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
            return "'" . str_replace("'", "''", $literal) . "'";
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
     * Creates an instance of BETWEEN() function, with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
     * @param mixed $val Valued to be inspected by range values.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
     * @param integer $x Starting range value to be used in BETWEEN() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
     * @param integer $y End point value to be used in BETWEEN() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
     * @return Expr\Func A BETWEEN expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
    public function between($val, $x, $y)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
        return $val . ' BETWEEN ' . $x . ' AND ' . $y;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
    /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
     * Creates an instance of TRIM() function, with the given argument.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
     *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
     * @param mixed $x Argument to be used as argument of TRIM() function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
     * @return Expr\Func a TRIM expression.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
     */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
    public function trim($x)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
        return new Expr\Func('TRIM', $x);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
}