Не удалось восстановить мягко удаленные данные в laravel

Интересно, почему я не могу восстановить мягко удаленные данные в laravel. Я сделал все правильно, но не уверен, что мне не хватает, поэтому я не могу восстановить данные.

Моя модель

namespace App\Model\Clients;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class SocialAccounts extends Model{

   protected $table = 'social_accounts';
   use SoftDeletes;
   protected $dates = ['deleted_at'];
}

Я использовал черты мягкого удаления. Для восстановления моих мягко удаленных данных я делаю что-то вроде ниже

$restoreAccount = SocialAccounts::withTrashed()->find($id)->restore();

но он не восстанавливает данные, я предполагаю, что когда мы восстанавливаем данные laravel NULL, столбец delete_at, но он ничего не обновляет в этом идентификаторе

я тоже пробовал

//second alternate method 
$restoreAccount= SocialAccounts::withTrashed()->find($id)->update(['deleted_at' => NULL]);

//Third alternate method
$restoreAccount = SocialAccounts::withTrashed()->find($id); 
$restoreAccount->deleted_at = NULL;
$restoreAccount->save();

Я не уверен, что я делаю неправильно, может есть что-то, что мы должны сделать, чтобы добиться восстановления? Я проверил официальный документ laravel и следую ему.


person Yamin    schedule 11.07.2017    source источник
comment
Вы уверены, что что-то еще в запросе не удаляет его? то есть он восстанавливается, но затем снова удаляется?   -  person Ben Swinburne    schedule 11.07.2017
comment
Я успеваю разобраться. Я использовал транзакцию БД и, не совершая ее, проверял результат. Дурак я. Спасибо за вашу помощь.   -  person Yamin    schedule 12.07.2017


Ответы (2)


$restoreAccount = SocialAccounts::onlyTrashed()->find($id)->restore();

person Kuldeep Mishra    schedule 11.07.2017
comment
Не работает, возвращает true, но по-прежнему показывает метку времени в столбце delete_at, и когда я выбираю данные, они не приходят. - person Yamin; 11.07.2017

Я не знаю, нашли ли вы уже ответ или нет, но, возможно, вы можете попробовать это в своем контроллере.

public function restore($id) 
{
    $restoreAccount = SocialAccounts::onlyTrashed()->->where('id', $id)->restore();
    return redirect()->route('your.route');
}
person Ivan    schedule 07.09.2017