Completed
Pull Request — master (#32)
by
unknown
01:49
created

Sqlsrv   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 4
Bugs 1 Features 0
Metric Value
wmc 1
c 4
b 1
f 0
lcom 1
cbo 0
dl 0
loc 27
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A dropAllTables() 0 5 1
1
<?php
2
3
namespace Spatie\MigrateFresh\TableDroppers;
4
5
use DB;
6
7
class Sqlsrv implements TableDropper
8
{
9
10
    private $constraintDropScript =	'
11
        DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR
12
        SET @Cursor = CURSOR FAST_FORWARD FOR
13
        SELECT DISTINCT sql = \'ALTER TABLE [\'+tc2.CONSTRAINT_SCHEMA+\'].[\' + tc2.TABLE_NAME + \'] DROP [\' + rc1.CONSTRAINT_NAME + \']\'
14
        FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1
15
        LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME
16
        
17
        OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql
18
        
19
        WHILE (@@FETCH_STATUS = 0)
20
        BEGIN
21
        PRINT @Sql
22
        Exec (@Sql)
23
        FETCH NEXT FROM @Cursor INTO @Sql
24
        END
25
        
26
        CLOSE @Cursor DEALLOCATE @Cursor';
27
28
    public function dropAllTables()
29
    {
30
        DB::unprepared($this->constraintDropScript);
31
        DB::unprepared("exec sp_MSforeachtable 'DROP TABLE ?'");
32
    }
33
}
34