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

Sqlsrv::dropAllTables()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
c 3
b 1
f 0
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 0
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