无法删除 Laravel 5 中的记录
Can't delete a record in Laravel 5
我在删除包含文件的记录时遇到问题。下面是代码。
删除文件方法:
private function deletePDF(Journal $journal) {
$exist = Storage::disk('file')->exists($journal->file);
if (isset($journal->file) && $exist) {
$delete = Storage::disk('file')->delete($journal->file);
if ($delete) {
return true;
}
return false;
}
}
销毁方法:
public function destroy(Journal $journal, EditionRequest $request) {
$this->deletePDF($journal);
$journal->delete();
return redirect()->route('edition', ['id' => $request->id]);
}
结果我什么都没有,只是return到记录所属的页面,并没有删除记录。我对另一个具有相同 laravel 版本的项目使用了相同的代码并且它正在工作,但由于某些原因它在这里不起作用而且我有点困惑。
更新:
版本请求:
public function rules() {
// Cek apakah CREATE atau UPDATE
$id = $this->get('id');
if ($this->method() == 'PATCH') {
$volume_rules = 'required|integer|unique_with:edition,number,' . $id;
$number_rules = 'required|integer';
} else {
$volume_rules = 'required|integer|unique_with:edition,number';
$number_rules = 'required|integer';
}
return [
'volume' => $volume_rules,
'number' => $number_rules,
'cover' => 'sometimes|image|max:15000|mimes:jpeg,jpg,bmp,png',
];
}
如果它 returns 到与之前相同的页面,则您的请求中可能存在验证错误!
您可以通过将以下代码段添加到您的视图中来轻松检查错误:
@if(count($errors) > 0)
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
@endif
有了这个你应该能够看到哪里出了问题。让我知道它是否有效:)
编辑
public function rules() {
// Cek apakah CREATE atau UPDATE
$id = $this->get('id');
if ($this->method() == 'PATCH') {
$volume_rules = 'required|integer|unique_with:edition,number,' . $id;
$number_rules = 'required|integer';
}
else if($this->method() == 'DELETE'){
//your delete validation rules rules
$volume_rules = ''
$number_rules= '';
}
else {
$volume_rules = 'required|integer|unique_with:edition,number';
$number_rules = 'required|integer';
}
return [
'volume' => $volume_rules,
'number' => $number_rules,
'cover' => 'sometimes|image|max:15000|mimes:jpeg,jpg,bmp,png',
];
}
您甚至可能不想使用您现在正在使用的请求,这会给您带来:
public function destroy(Journal $journal, Request $request)
我在删除包含文件的记录时遇到问题。下面是代码。
删除文件方法:
private function deletePDF(Journal $journal) {
$exist = Storage::disk('file')->exists($journal->file);
if (isset($journal->file) && $exist) {
$delete = Storage::disk('file')->delete($journal->file);
if ($delete) {
return true;
}
return false;
}
}
销毁方法:
public function destroy(Journal $journal, EditionRequest $request) {
$this->deletePDF($journal);
$journal->delete();
return redirect()->route('edition', ['id' => $request->id]);
}
结果我什么都没有,只是return到记录所属的页面,并没有删除记录。我对另一个具有相同 laravel 版本的项目使用了相同的代码并且它正在工作,但由于某些原因它在这里不起作用而且我有点困惑。
更新:
版本请求:
public function rules() {
// Cek apakah CREATE atau UPDATE
$id = $this->get('id');
if ($this->method() == 'PATCH') {
$volume_rules = 'required|integer|unique_with:edition,number,' . $id;
$number_rules = 'required|integer';
} else {
$volume_rules = 'required|integer|unique_with:edition,number';
$number_rules = 'required|integer';
}
return [
'volume' => $volume_rules,
'number' => $number_rules,
'cover' => 'sometimes|image|max:15000|mimes:jpeg,jpg,bmp,png',
];
}
如果它 returns 到与之前相同的页面,则您的请求中可能存在验证错误!
您可以通过将以下代码段添加到您的视图中来轻松检查错误:
@if(count($errors) > 0)
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
@endif
有了这个你应该能够看到哪里出了问题。让我知道它是否有效:)
编辑
public function rules() {
// Cek apakah CREATE atau UPDATE
$id = $this->get('id');
if ($this->method() == 'PATCH') {
$volume_rules = 'required|integer|unique_with:edition,number,' . $id;
$number_rules = 'required|integer';
}
else if($this->method() == 'DELETE'){
//your delete validation rules rules
$volume_rules = ''
$number_rules= '';
}
else {
$volume_rules = 'required|integer|unique_with:edition,number';
$number_rules = 'required|integer';
}
return [
'volume' => $volume_rules,
'number' => $number_rules,
'cover' => 'sometimes|image|max:15000|mimes:jpeg,jpg,bmp,png',
];
}
您甚至可能不想使用您现在正在使用的请求,这会给您带来:
public function destroy(Journal $journal, Request $request)