bla*_*tme 3 soft-delete laravel
我有一些关于 Laravel 软删除的问题。我已经搜索了它的作用和含义,关于软删除最容易理解的部分来自这句话
“当模型被软删除时,它们实际上并没有从您的数据库中删除。相反,在模型上设置了一个 Deleted_at 属性并将其插入到数据库中。如果模型具有非空的 deleted_at 值,则该模型已被软删除。要为模型启用软删除,请在模型上使用 Illuminate\Database\Eloquent\SoftDeletes 特征并将 deleted_at 列添加到您的 $dates 属性:"
所以这是我根据那句话提出的问题:
问题 1:
那么,当我在代码中使用软删除时,当我尝试删除一些数据时,视图页面(blade.php)中的数据是否消失而数据库仍然包含这些数据?
问题 2:
我看到有些人使用称为 static::deleting 的东西,我不太明白这是如何工作的?你能解释一下它的作用吗?谢谢
问题 3:
如何使用软删除删除数据?我看到人们只是将一些东西放入他们的模型中而不是使用按钮,那么这是否意味着您只能在模型中手动删除它,而不仅仅是单击视图页面中的删除按钮?
默认情况下:是。
这取决于您的查询。使用软删除时,Laravel 默认会查询所有没有被软删除的模型。当您还想获得软删除的模型时,您需要withTrashed()在查询中调用该方法。在此处阅读更多信息:https :
//laravel.com/docs/5.5/eloquent#querying-soft-deleted-models
要了解withTrashed()它的作用,您需要了解软删除的工作原理。软删除模型的工作原理是向数据库表中添加一个名为 的新列deleted_at。它的值默认为null。当您软删除模型时,Laravel 会将当前时间戳放入该列。因此,该字段不再包含空值。
在使用软删除查询模型时,Laraveldeleted_at is null会在查询中附加一个条件。调用该withTrashed()方法,从查询中删除该条件。
那是事件。你可以调用它来告诉 Laravel,它应该在这个事件发生时执行那个特定的闭包。在您的示例中,它正在侦听“删除”事件。在此处查看更多信息:https :
//laravel.com/docs/5.5/eloquent#events
您可以使用该forceDelete()方法完全删除可软删除的模型。请参阅此处的“永久删除模型”:https :
//laravel.com/docs/5.5/eloquent#querying-soft-deleted-models
| 归档时间: |
|
| 查看次数: |
8677 次 |
| 最近记录: |