ソフト削除されたエンティティをLaravel 4.2で復元しようとしていますが、deleted_at
のタイムスタンプを無効な形式に設定し続けます。ソフト削除されたエンティティを復元すると、deleted_at列に無効なタイムスタンプが設定される
NULL
に設定する代わりに、0000-00-00 00:00:00
に設定し、Laravelが列が空ではないため、Laravelが削除済みとして認識し続けるため、ソフト削除されたエンティティを実際に復元できなくなります。
私は、deleted_at
属性へのセッターを使用して試してみましたが、動作しません。
コードは実際には非常に簡単です:私は、ユーザーが復元されたが失敗したように、deleted_at列を無効にするPUT要求を送信します。
// Javascript
$("#enable-user").on('click', function (event) {
var action = $(this).attr('action');
swal({
title: "Are you sure?",
text: "Do you want to reactivate this user?",
type: "warning",
showCancelButton: true,
html: true,
cancelButtonText: "Cancel",
confirmButtonText: "Continue",
closeOnConfirm: false,
closeOnCancel: true,
showLoaderOnConfirm: true
},
function(isConfirm) {
if (isConfirm) {
$.ajax({
type: 'PUT',
url: action,
headers: {
'X-CSRF-Token': $("input[name='_token']").attr('value')
},
data: {
deleted_at: null
},
success: function(data) {
sweetAlert("Sii!", "User re-activated successfully!", "success");
},
error: function(jqXHR, textStatus, errorThrown) {
if (jqXHR.status === 401) {
sweetAlert("Oops...", jqXHR.responseJSON.message, "error");
} else {
sweetAlert("Oops...", "Something went wrong!", "error");
}
}
});
}
});
});
// UsersController
public function updateUser($userId)
{
$input = Input::all();
$user = User::withTrashed()->where('id', '=', $userId)->firstOrFail();
if (array_key_exists('exports', $input)) {
$user->exportAccounts()->sync([]);
$user->exportAccounts()->sync($input['exports']);
unset($input['exports']);
}
if (array_key_exists('regions', $input)) {
$user->regions()->sync([]);
$user->regions()->sync($input['regions']);
unset($input['regions']);
}
$user->update($input);
$user->queueUpdateToAlgolia();
return Response::json([], 200);
}
これは、復元後に、データベースに表示されるものである:
:これに
? –
私は両方の方法を試みました。 'restore()'もうまくいきません。 – GiamPy