Laravel 5.2 Eloquent softdelete не работает

В моей модели есть функция softdelete. Я пытаюсь удалить файл в базе данных, но не работает. Вот моя модель:

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

class File extends Model
{
    use SoftDeletes;

    protected $table = 'files';

    protected $dates = ['deleted_at'];
}

Мой файл миграции:

public function up()
{
    Schema::table('files', function (Blueprint $table) {
        $table->softDeletes();
    });
}

И в своем контроллере я делаю это так.

$fileID = explode('/', $img)[1];

$JobImage = JobImage::where('file_id', $fileID)->update(['file_id' => null]); <- I'm updating first the column value of it's relationship to null, which works well.
$file = File::where('id', $fileID)->delete();

Я не понимаю, а какой части мне не хватает?


person Eem Jee    schedule 26.06.2020    source источник


Ответы (2)


Вы должны использовать вот так

public function down()
{
    Schema::table('files', function (Blueprint $table) {

        $table->dropSoftDeletes(); //add this line
    });
}

Перейдите по этой ссылке. Вам ясна картина

person A.A Noman    schedule 26.06.2020
comment
@EemJee Перейдите по этой ссылке. - person A.A Noman; 26.06.2020
comment
В настоящее время я использую Laravel 5.2. - person Eem Jee; 26.06.2020

Вы должны добавить в свою модель атрибут fillable или guarded. Поскольку действие delete использует массовое назначение для магазинов deleted_at

person Immeyti    schedule 26.06.2020
comment
Какие столбцы добавить в охраняемые или заполняемые? - person Eem Jee; 26.06.2020
comment
вы можете добавить столбец id в guarded. это означает, что вы добавили другие столбцы в fillable - person Immeyti; 26.06.2020