我知道如何使用laravel 5.1创建迁移,我有以下代码
public function up()
{
Schema::create('articulos', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('content');
$table->integer('categoria_id')->unsigned();
$table->integer('creador_id')->unsigned();
$table->string('slug', 32);
$table->timestamps();
});
Schema::table('articulos', function($table) {
$table->foreign('categoria_id')->references('id')->on('categorias');
$table->foreign('creador_id')->references('id')->on('users');
});
}
当我尝试删除带有文章的类别时,我的外键有错误,是否有可能删除此类别?
答案 0 :(得分:2)
创建外键约束时,您还可以决定约束应该发生什么。例如,如果您想在删除类别时删除所有文章(我猜是您的问题):
cascade
另见documentation。 on deletion
向数据库标识categorias
条目的cascade
,该表应articulos
onDelete('set null')
表中的操作。
要进一步阐明此外来约束中的选项,您可以使用:
onDelete('restrict')
在删除外键后使列值为null onDelete('cascade')
(默认行为)如果仍存在条目,则拒绝删除外键onDelete
在删除外键后自动删除条目MySQL的更多信息。请注意,Laravel不需要外键约束来支持关系。有时您可能不需要外键。
除了onUpdate
之外,您还可以使用{{1}}。