有没有办法软删除表中的所有现有行? 我试过(Prospect :: delete();)它永久删除了所有行,但它不能用于软删除。
答案 0 :(得分:1)
如果您使用的是早于4.2的Laravel框架,那么您可以在模型中设置软删除,
class ModelName extends Eloquent {
protected $table = 'table_name';
protected $softDelete = true;
}
如果您使用的是Laravel framework 4.2,则可以将模型中的软删除设置为
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class ModelName extends Eloquent {
use SoftDeletingTrait;
protected $table = 'table_name';
}
如果您使用的是4.2以上的Laravel框架,那么您可以在模型中设置软删除,
use Illuminate\Database\Eloquent\SoftDeletes;
class ModelName extends Eloquent {
use SoftDeletes;
protected $table = 'table_name';
}
我希望你使用的是Laravel 5.所以你可以使用第三种方法。
答案 1 :(得分:0)
查看此soft delete
在您的模型中使用此特征:
use Illuminate\Database\Eloquent\SoftDeletes;
并将其添加到您的模型和数据库架构中:
型号:
class Flight extends Model
{
use SoftDeletes;
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
}
数据库架构
Schema::table('flights', function ($table) {
$table->softDeletes();
});
现在,当您在模型上调用delete方法时,deleted_at列将设置为当前日期和时间。并且,在查询使用软删除的模型时,软删除的模型将自动从所有查询结果中排除。
要确定某个模型实例是否已被软删除,请使用trashed方法:
if ($flight->trashed()) {
//
}
答案 2 :(得分:0)
它通常不会删除数据库中的行。您应该添加一列isActive等并设置它(1/0)或(true / false)。 如果你想要显示行,你应该“从表中选择* isActive = 1”