在laravel 5中删除了soft apply apply physicaldelete not set deleted_at

时间:2015-04-25 08:35:14

标签: laravel laravel-4 laravel-5

我的模特是:

<?php namespace App\Http\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Province extends Model {

 // use SoftDeletes;

public $timestamps = false;

protected $dates = ['deleted_at'];

public function country(){
    return $this->belongsTo('App\Http\Models\Country');
}

public function users(){
    return $this->hasMany('App\Http\Models\User');
}

public function customers(){
    return $this->hasMany('App\Http\Models\Customer');
}

}

控制器:

public function destroy($id)
{
    $province = Province::with('country')->where('id', $id)->first();

   // dd($province);
    $province->delete();
 }

致电http://localhost:8080/pal/public/province/22/delete

记录22从数据库中物理删除。

缺少什么?

1 个答案:

答案 0 :(得分:3)

如果您的模型启用了软删除,则在您进行查询时,将不会返回deleted_at不是null的记录。因此,您尝试在delete()上调用null,这会导致错误。

在测试过程中手动将deleted_at设置为null以“取消删除”记录。

此外,您可能应该在删除之前检查模型是否为null

$province = Province::with('country')->where('id', $id)->first();

if($province != null){
    $province->delete();
}