/var/www/hkosl.com/imusiccircle/webadmin/libraies/illuminate/database/Illuminate/Database/Query/Grammars/MySqlGrammar.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php namespace Illuminate\Database\Query\Grammars;

use 
Illuminate\Database\Query\Builder;

class 
MySqlGrammar extends Grammar {

    
/**
     * The components that make up a select clause.
     *
     * @var array
     */
    
protected $selectComponents = array(
        
'aggregate',
        
'columns',
        
'from',
        
'joins',
        
'wheres',
        
'groups',
        
'havings',
        
'orders',
        
'limit',
        
'offset',
        
'lock',
    );

    
/**
     * Compile a select query into SQL.
     *
     * @param  \Illuminate\Database\Query\Builder
     * @return string
     */
    
public function compileSelect(Builder $query)
    {
        
$sql parent::compileSelect($query);

        if (
$query->unions)
        {
            
$sql '('.$sql.') '.$this->compileUnions($query);
        }

        return 
$sql;
    }

    
/**
     * Compile a single union statement.
     *
     * @param  array  $union
     * @return string
     */
    
protected function compileUnion(array $union)
    {
        
$joiner $union['all'] ? ' union all ' ' union ';

        return 
$joiner.'('.$union['query']->toSql().')';
    }

    
/**
     * Compile the lock into SQL.
     *
     * @param  \Illuminate\Database\Query\Builder  $query
     * @param  bool|string  $value
     * @return string
     */
    
protected function compileLock(Builder $query$value)
    {
        if (
is_string($value)) return $value;

        return 
$value 'for update' 'lock in share mode';
    }

    
/**
     * Compile an update statement into SQL.
     *
     * @param  \Illuminate\Database\Query\Builder  $query
     * @param  array  $values
     * @return string
     */
    
public function compileUpdate(Builder $query$values)
    {
        
$sql parent::compileUpdate($query$values);

        if (isset(
$query->orders))
        {
            
$sql .= ' '.$this->compileOrders($query$query->orders);
        }

        if (isset(
$query->limit))
        {
            
$sql .= ' '.$this->compileLimit($query$query->limit);
        }

        return 
rtrim($sql);
    }

    
/**
     * Wrap a single string in keyword identifiers.
     *
     * @param  string  $value
     * @return string
     */
    
protected function wrapValue($value)
    {
        if (
$value === '*') return $value;

        return 
'`'.str_replace('`''``'$value).'`';
    }

}