【发布时间】:2014-06-12 22:40:15
【问题描述】:
在 softDeletes 时,Laravel 4.1 会自行管理唯一索引(其中 deleted_at = null)的创建吗?
下面的方法正确吗?还是会混入已经删除的记录?
Schema::create('example', function(Blueprint $table) {
$table->increments('id');
$table->integer('example')->unsigned()->unique(); //?????
$table->softDeletes();
});
数据库是mysql,但是如果有其他DB:s的解决方案,你也可以提供。但是,它应该在 laravel 框架内完成!感谢 laravel 官方支持的所有数据库的统一解决方案。
更新 这种方法似乎不起作用,因为它只是忽略了 softDeletes() 选项。
所以提出的解决方案
Schema::create('exampe', function(Blueprint $table) {
$table->increments('id');
$table->integer('example')->unsigned();
$table->softDeletes();
$table->unique('example', 'deleted_at');
});
问题在于,deleted_at 列中可能存在两个完全相同的时间戳。
我真正需要的是 where 条件。
$table->unique('example', array('where', 'deleted_at', '=', null));
或
$table->integer('example')->unsigned()->unique()->where('deleted_at', '=', null)
【问题讨论】:
-
您使用的是哪个 DBMS?后格雷斯?甲骨文?