Question: I want to create a Migration which shall drop a table. I created the Migration like this:

```
Schema::table('devices', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('client_id')->nullable();
    $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');
});

```

And now I try to drop it like this:

```
    Schema::table('devices', function (Blueprint $table) {
        $table->dropForeign('devices_client_id_foreign');
        $table->drop('devices');
    });

```

But I get following error:

> 
> 
> ```
> In Connection.php line 664:
> 
>   SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'devices_client_id_foreign'; check that column/key exists (SQL:
> 
> ```
> 
> alter table `devices` drop foreign key `devices_client_id_foreign`)
> 
> 
> 
> ```
> In PDOStatement.php line 144:
> 
>   SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'devices_client_id_foreign'; check that column/key exists
> 
> 
> In PDOStatement.php line 142:
> 
>   SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'devices_client_id_foreign'; check that column/key exists
> 
> ```
> 
>

Answer: 
You can use this answer. <https://stackoverflow.com/a/30177480/8513937>

Pass to *dropForeign* the column name as array. Internally, Laravel drops the associated foreign key.

```
$table->dropForeign(['client_id']);

```
Try this ways...

```
  public function down()
 {
    Schema::dropIfExists('devices');
 }

//Or this
  public function down(){
    Schema::table('devices', function (Blueprint $table) {
        $table->dropForeign(['client_id']);
        $table->dropColumn('client_id');
        $table->drop('devices');
    });
  }

```