use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model {
use SoftDeletes;
protected $table = 'posts';
// ...
}
use Illuminate\Database\Eloquent\SoftDeletingTrait; // <-- This is required
class Post extends Eloquent {
use SoftDeletingTrait;
protected $table = 'posts';
// ...
}
4.2之前版本(但不是4.2及以后版本)
例如(使用posts表和Post模型):
class Post extends Eloquent {
protected $table = 'posts';
protected $softDelete = true;
// ...
}
/**
* 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();
});
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model
{
use SoftDeletes;
}
8条答案
按热度按时间quhf5bfb1#
更新版本(5.0及以后版本):
当软删除模型时,它实际上并没有从数据库中删除。相反,在记录上设置
deleted_at
时间戳。要为模型启用软删除,请在模型上指定softDelete
属性(文档)。适用于(4.2版):
4.2之前版本(但不是4.2及以后版本)
例如(使用
posts
表和Post
模型):要在表中添加deleted_at列,可以使用迁移中的
softDeletes
方法:例如(迁移类的
posts
表的up
方法):现在,当您在模型上调用
delete
方法时,deleted_at
列将被设置为当前timestamp
。当查询使用软删除的模型时,“已删除”的模型将不会包含在查询结果中。要soft delete
一个模型,您可以用途:软模型由
timestamp
标识,如果deleted_at
字段是NULL
,则不会删除它,并且使用restore
方法实际上使deleted_at
字段NULL
。要永久删除模型,您可以使用forceDelete
方法。8cdiaqws2#
你实际上做的是正常的删除。但是在模型上,您指定它是一个软删除模型。
所以在你的模型上添加代码:
然后在你的代码中执行正常的删除操作,如下所示:
同时确保表中有
deleted_at
列。或者直接看docs:http://laravel.com/docs/eloquent#soft-deleting
thtygnil3#
我刚刚用Laravel 8做了这个,它工作了。这基本上就是“阿尔法说的,但试图更快地 Package 所有内容。按照以下步骤操作。
在migration文件中添加:
型号中:
}
在控制器中:
奖励:如果需要恢复已删除用户
628mspwn4#
更新Laravel 5:
在Laravel 4.2中:
在Laravel 5中:
kd3sttzy5#
在Laravel 5.5中,Soft Deleted工作(对我来说)。
数据库
型号
控制器
y3bcpkx16#
在Laravel的最新版本中,即Laravel 5.0**以上。执行此任务非常简单。在Model中,在类中只写'use SoftDeletes'。例如
在Controller中,您可以执行删除操作。例如
或
确保你必须在用户表中有'deleted_at'列。
kcwpcxri7#
以下是来自laravel.com的详细信息
http://laravel.com/docs/eloquent#soft-deleting
当软删除模型时,它实际上并没有从数据库中删除。相反,在记录上设置deleted_at时间戳。要为模型启用软删除,请在模型上指定
softDelete
属性:要将deleted_at列添加到表中,可以使用迁移中的
softDeletes
方法:现在,当您在模型上调用delete方法时,deleted_at列将被设置为当前时间戳。当查询使用软删除的模型时,“已删除”的模型将不会包含在查询结果中。
92dk7w1h8#
更新版本(5.0及以上)
要启用此功能,我们需要在数据库(或迁移)中添加一个
deleted_at
列,用于Map目的。例如:
另外,我们需要在模型上使用
Illuminate\Database\Eloquent\SoftDeletes
trait例如:
我们现在可以像以前一样调用
delete()
方法官方文件请点击这里。