Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Database\Query\Processors;
4
 
5
use Exception;
6
use Illuminate\Database\Connection;
7
use Illuminate\Database\Query\Builder;
8
 
9
class SqlServerProcessor extends Processor
10
{
11
    /**
12
     * Process an "insert get ID" query.
13
     *
14
     * @param  \Illuminate\Database\Query\Builder  $query
15
     * @param  string  $sql
16
     * @param  array  $values
17
     * @param  string|null  $sequence
18
     * @return int
19
     */
20
    public function processInsertGetId(Builder $query, $sql, $values, $sequence = null)
21
    {
22
        $connection = $query->getConnection();
23
 
24
        $connection->insert($sql, $values);
25
 
26
        if ($connection->getConfig('odbc') === true) {
27
            $id = $this->processInsertGetIdForOdbc($connection);
28
        } else {
29
            $id = $connection->getPdo()->lastInsertId();
30
        }
31
 
32
        return is_numeric($id) ? (int) $id : $id;
33
    }
34
 
35
    /**
36
     * Process an "insert get ID" query for ODBC.
37
     *
38
     * @param  \Illuminate\Database\Connection  $connection
39
     * @return int
40
     *
41
     * @throws \Exception
42
     */
43
    protected function processInsertGetIdForOdbc(Connection $connection)
44
    {
45
        $result = $connection->selectFromWriteConnection(
46
            'SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS int) AS insertid'
47
        );
48
 
49
        if (! $result) {
50
            throw new Exception('Unable to retrieve lastInsertID for ODBC.');
51
        }
52
 
53
        $row = $result[0];
54
 
55
        return is_object($row) ? $row->insertid : $row['insertid'];
56
    }
57
 
58
    /**
59
     * Process the results of a column listing query.
60
     *
61
     * @param  array  $results
62
     * @return array
63
     */
64
    public function processColumnListing($results)
65
    {
66
        return array_map(function ($result) {
67
            return ((object) $result)->name;
68
        }, $results);
69
    }
70
}