【问题标题】:Can't delete a record in Laravel 5无法删除 Laravel 5 中的记录
【发布时间】:2016-10-07 12:48:36
【问题描述】:

我在删除包含文件的记录时遇到问题。下面是代码。

删除文件方法:

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]);
}

结果什么都没有,只是返回到记录所在的页面,并没有删除记录。我在另一个具有相同 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',
        ];
    }

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    如果它返回到与之前相同的页面,则您的请求中可能存在验证错误!

    您可以通过将以下 sn-p 添加到视图中来轻松检查错误:

    @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) 
    

    【讨论】:

    • 您的意思是将 sn-p 添加到显示记录的视图中?如果是这样,那么 sn-p 给了我这个错误 Missing argument 1 for Illuminate\Support\MessageBag::has(), 在 C:\xampp\htdocs\2mark\vendor\laravel\framework\src\Illuminate\Support\ViewErrorBag 中调用.php 在第 82 行并定义(查看:C:\xampp\htdocs\2mark\resources\views\edition\show.blade.php)
    • @AriandoMiller 进行了更新,尝试一下,确实将其添加到重定向回来时弹出的页面视图中
    • 有效!它给了我这个结果卷字段是必需的。数字字段是必需的。我现在正在更新我的问题以向您展示请求
    • @AriandoMiller 接受答案,如果可行,请点赞:)
    • 我当然会 :),但它还没有解决问题,它表明问题似乎在我的请求中,我不知道我做错了什么
    最近更新 更多