/var/www/hkosl.com/imusiccircle/webadmin/libraies/illuminate/database/Illuminate/Database/Migrations/DatabaseMigrationRepository.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<?php namespace Illuminate\Database\Migrations;

use 
Illuminate\Database\ConnectionResolverInterface as Resolver;

class 
DatabaseMigrationRepository implements MigrationRepositoryInterface {

    
/**
     * The database connection resolver instance.
     *
     * @var \Illuminate\Database\ConnectionResolverInterface
     */
    
protected $resolver;

    
/**
     * The name of the migration table.
     *
     * @var string
     */
    
protected $table;

    
/**
     * The name of the database connection to use.
     *
     * @var string
     */
    
protected $connection;

    
/**
     * Create a new database migration repository instance.
     *
     * @param  \Illuminate\Database\ConnectionResolverInterface  $resolver
     * @param  string  $table
     * @return void
     */
    
public function __construct(Resolver $resolver$table)
    {
        
$this->table $table;
        
$this->resolver $resolver;
    }

    
/**
     * Get the ran migrations.
     *
     * @return array
     */
    
public function getRan()
    {
        return 
$this->table()->lists('migration');
    }

    
/**
     * Get the last migration batch.
     *
     * @return array
     */
    
public function getLast()
    {
        
$query $this->table()->where('batch'$this->getLastBatchNumber());

        return 
$query->orderBy('migration''desc')->get();
    }

    
/**
     * Log that a migration was run.
     *
     * @param  string  $file
     * @param  int     $batch
     * @return void
     */
    
public function log($file$batch)
    {
        
$record = array('migration' => $file'batch' => $batch);

        
$this->table()->insert($record);
    }

    
/**
     * Remove a migration from the log.
     *
     * @param  object  $migration
     * @return void
     */
    
public function delete($migration)
    {
        
$this->table()->where('migration'$migration->migration)->delete();
    }

    
/**
     * Get the next migration batch number.
     *
     * @return int
     */
    
public function getNextBatchNumber()
    {
        return 
$this->getLastBatchNumber() + 1;
    }

    
/**
     * Get the last migration batch number.
     *
     * @return int
     */
    
public function getLastBatchNumber()
    {
        return 
$this->table()->max('batch');
    }

    
/**
     * Create the migration repository data store.
     *
     * @return void
     */
    
public function createRepository()
    {
        
$schema $this->getConnection()->getSchemaBuilder();

        
$schema->create($this->table, function($table)
        {
            
// The migrations table is responsible for keeping track of which of the
            // migrations have actually run for the application. We'll create the
            // table to hold the migration file's path as well as the batch ID.
            
$table->string('migration');

            
$table->integer('batch');
        });
    }

    
/**
     * Determine if the migration repository exists.
     *
     * @return bool
     */
    
public function repositoryExists()
    {
        
$schema $this->getConnection()->getSchemaBuilder();

        return 
$schema->hasTable($this->table);
    }

    
/**
     * Get a query builder for the migration table.
     *
     * @return \Illuminate\Database\Query\Builder
     */
    
protected function table()
    {
        return 
$this->getConnection()->table($this->table);
    }

    
/**
     * Get the connection resolver instance.
     *
     * @return \Illuminate\Database\ConnectionResolverInterface
     */
    
public function getConnectionResolver()
    {
        return 
$this->resolver;
    }

    
/**
     * Resolve the database connection instance.
     *
     * @return \Illuminate\Database\Connection
     */
    
public function getConnection()
    {
        return 
$this->resolver->connection($this->connection);
    }

    
/**
     * Set the information source to gather data.
     *
     * @param  string  $name
     * @return void
     */
    
public function setSource($name)
    {
        
$this->connection $name;
    }

}