拉拉维尔软删除帖子
在我们的项目中,我们必须对每个帖子使用软删除。在laravel文档中,我认为我们只能将此功能用于表格。
我们可以将其用于桌子上的帖子,例如
$id = Contents::find($id);
$id->softDeletes();
在我们的项目中,我们必须对每个帖子使用软删除。在laravel文档中,我认为我们只能将此功能用于表格。
我们可以将其用于桌子上的帖子,例如
$id = Contents::find($id);
$id->softDeletes();
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model {
use SoftDeletes;
protected $table = 'posts';
// ...
}
软删除模型时,实际上不会从数据库中删除该模型。而是在记录上设置时间戳。要为模型启用软删除,请在模型上指定属性(文档)。
deleted_at
softDelete
use Illuminate\Database\Eloquent\SoftDeletingTrait; // <-- This is required
class Post extends Eloquent {
use SoftDeletingTrait;
protected $table = 'posts';
// ...
}
例如(使用表和模型):posts
Post
class Post extends Eloquent {
protected $table = 'posts';
protected $softDelete = true;
// ...
}
要向表中添加deleted_at列,您可以使用迁移中的方法:
softDeletes
例如(表的迁移类方法):up
posts
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function(Blueprint $table)
{
$table->increments('id');
// more fields
$table->softDeletes(); // <-- This will add a deleted_at field
$table->timeStamps();
});
}
现在,当您在模型上调用该方法时,该列将设置为当前 。查询使用软删除的模型时,“已删除”模型将不包括在查询结果中。对于模型,您可以使用:delete
deleted_at
timestamp
soft delete
$model = Contents::find( $id );
$model->delete();
已删除的(软)模型由 和 如果字段是,则不会将其删除,并且使用该方法实际上会使字段 。要永久删除模型,您可以使用方法。timestamp
deleted_at
NULL
restore
deleted_at
NULL
forceDelete
您实际上执行了正常删除。但是在模型上,您指定它是一个软删除模型。
因此,在您的模型上添加代码:
class Contents extends Eloquent {
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
}
然后在您的代码上进行正常删除,如下所示:
$id = Contents::find( $id );
$id ->delete();
还要确保表中有该列。deleted_at