Laravel - onDelete("cascade") 不起作用
Laravel - onDelete("cascade") does not work
我有一个 Laravel 4
应用程序,其中包含投票和不同的选项或选择。问题是当我销毁投票时,选项并没有从数据库中删除。
这些是我的主要迁移:
民意调查:
private $table = 'polls';
public function down() {
Schema::dropIfExists($this->table);
}
public function up() {
Schema::create($this->table, function(Blueprint $table) {
$table->increments('id');
$table->string( 'owner' )->unsigned();
$table->foreign('owner' )->references('id')->on('users')->onDelete('cascade');
$table->string( 'topic' );
$table->boolean('multichoice')->default(false);
$table->boolean('signed' )->default(false); // Marks if the poll can be voted only by authenticated users
$table->timestamps();
});
}
选项:
private $table = 'options';
public function down() {
Schema::dropIfExists($this->table);
}
public function up() {
Schema::create($this->table, function(Blueprint $table) {
$table->increments('id');
$table->integer( 'poll_id')->unsigned();
$table->foreign( 'poll_id')->references('id')->on('polls')->onDelete('cascade');
$table->string( 'name' );
$table->integer( 'votes' )->default(0);
$table->timestamps();
});
}
这是删除的代码:
Poll::destroy($id);
我现在正在使用 sqlite
作为我的数据库。
我做错了什么?
也许 sqlite 禁用了外键支持(默认行为)。
见ON DELETE CASCADE in sqlite3
我有一个 Laravel 4
应用程序,其中包含投票和不同的选项或选择。问题是当我销毁投票时,选项并没有从数据库中删除。
这些是我的主要迁移:
民意调查:
private $table = 'polls';
public function down() {
Schema::dropIfExists($this->table);
}
public function up() {
Schema::create($this->table, function(Blueprint $table) {
$table->increments('id');
$table->string( 'owner' )->unsigned();
$table->foreign('owner' )->references('id')->on('users')->onDelete('cascade');
$table->string( 'topic' );
$table->boolean('multichoice')->default(false);
$table->boolean('signed' )->default(false); // Marks if the poll can be voted only by authenticated users
$table->timestamps();
});
}
选项:
private $table = 'options';
public function down() {
Schema::dropIfExists($this->table);
}
public function up() {
Schema::create($this->table, function(Blueprint $table) {
$table->increments('id');
$table->integer( 'poll_id')->unsigned();
$table->foreign( 'poll_id')->references('id')->on('polls')->onDelete('cascade');
$table->string( 'name' );
$table->integer( 'votes' )->default(0);
$table->timestamps();
});
}
这是删除的代码:
Poll::destroy($id);
我现在正在使用 sqlite
作为我的数据库。
我做错了什么?
也许 sqlite 禁用了外键支持(默认行为)。
见ON DELETE CASCADE in sqlite3