我只想删除“概述”页面上的项目,但是我希望将元素保留在数据库中。有可能吗?
您对程序有想法吗?
我不知道如何进行软删除,在我的控制器中,我有
public function destroy(Devis $devis)
{
$devis->delete();
return redirect('/admin');
}
在我的路线上,我有
Route::group(['middleware' => ['auth']], function () {
Route::get('/admin', 'AdminController@getHome');
Route::get('/valider/{devis}', 'AdminController@destroy');
});
在我的文件概述中,我拥有
@foreach($devis as $item)
<tr>
<td> {{$item->firstname}}</td>
<td> {{$item->lastname}} </td>
<td> {{$item->phone}} </td>
<td> {{$item->start_adress}} -- {{$item->start_floor}}</td>
<td> {{$item->end_adress}} -- {{$item->end_floor}}</td>
<td> {{$item->type_intervention}}</td>
<td> {{$item->email}} </td>
<td> {{$item->remarks}} </td>
<td> <a href="/valider/{{$item->id}}" class="btn btn-danger"><span class="left ion-close"></span></a></td>
</tr>
@endforeach
答案 0 :(得分:1)
使用软删除,您可以标记不再显示的项目 在应用程序中。 Laravel本机支持软删除,您只需要在 您需要的特定型号。
在 Laravel 5或更高版本中,如果您具有模型 Book ,则要启用它,您需要:
1。创建新的迁移
$ php artisan make:migration add_soft_delete_to_books --table=books
2。修改迁移并添加“ deleted_at”列。 Laravel模式构建器包含用于创建此列的辅助方法 softDeletes()。
public function up()
{
Schema::table('books', function(Blueprint $table){
$table->softDeletes();
});
}
public function down()
{
Schema::table('books', function(Blueprint $table){
$table->dropColumn('deleted_at');
});
}
3)运行迁移
$ php artisan migrate
4)打开Book模型并添加SoftDelete特性
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Book extends Model {
use SoftDeletes;
protected $dates = ['deleted_at'];
}
5)下次删除与此模型关联的记录时,delete_at列将设置为当前时间戳。
任何在时间戳上设置了delete_at时间戳的记录都不会包含在任何检索到的结果中。 6)如果需要在任何雄辩的查询结果中包括软删除的记录,则可以使用withTrashed方法:
$Books = Book::withTrashed()->get();
您会在此处找到官方documentation:
答案 1 :(得分:0)
当您要软删除时,实际上需要一个标志。假设您的表格中有一列 deleted ,该列接受布尔值。
当您在控制器中检索数据以将其传递到视图时,您将查询表,只需在查询中添加where
子句即可,例如:
->where('deleted',0)
因此您获得了“未删除”的项目。
现在,当您要进行软删除时,实际上并没有删除,而是更新列以将其状态设置为1。
答案 2 :(得分:0)
使用此命令:Documentation soft deleting 以后增加下载项目的条件
->whereNull('deleted_at')
答案 3 :(得分:0)
创建表时,必须将字段添加到soft delete
。最好是迁移。如果可以,您将使用soft delete
,然后:
$ item-> delete () - will be softdelete
$ item-> forcedelete () - will permanently delete
答案 4 :(得分:0)
Laravel具有自己的软删除实现。只需将use SoftDeletes
添加到您的模型中,它就会开始工作。尝试阅读Eloquent - Soft deletes,以了解有关它及其对代码的影响的更多信息。
答案 5 :(得分:0)
Laravel已经做到了here,因此您在模型中添加了deleted_at 正如文档所说,您的模型如下:
namespace App;
use Illuminate\Database\Eloquent\Model;
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'];
}