【问题标题】:Unable to delete when using soft delete使用软删除时无法删除
【发布时间】:2016-03-27 05:18:47
【问题描述】:

尝试了 softdelete,但我还不明白代码有什么问题。每当我尝试删除。它没有,它把页面扔回给我。

这是删除前确认页面的控制器:

public function deleteView($id)
    {
        $company = Company::find($id);
        return view('company.show')->with('company', $company);
    }

这是删除前要确认的视图:

@extends('layouts.member')

    @section('content')
        {!! Form::open(array('action'=> array('CompanyController@destroy', $company->id, '_method'=>'delete'))) !!}
        {!! Form::token() !!}

            <p>{!! $company->companyname !!}</p>
            <p>{!! $company->companyaddress !!}</p>
            </p>{!! $company->country !!}</p>
            <p>{!! $company->state !!}</p>
            <p>{!! $company->email !!}</p>
            <p>{!! $company->phone !!}</p>
            <p>{!! $company->website !!}</p>
            <p>{!! $company->companytype !!}</p>

            {!! Form::hidden('company_id', $company->id) !!}
            <p>{!! Form::submit('DELETE') !!}</p>
        {!! Form::close() !!}
    @stop

这是执行删除的控制器:

public function destroy(CompanyRequest $companyRequest)
    {
        $company_id = $companyRequest->company_id;
        if(!$this->companyBelongsToUser($company_id))
        {
            return redirect()->route('companyindex', $company_id)->with('message', 'Sorry, yuo cannot delete this company');
        }else
        {
            $company = Company::findOrFail($company_id);
            $company->delete();

            return redirect()->route('companyindex', $company_id)->with('message', 'Company deleted successfully');
        }
    }

这是删除前返回确认页面的路径:

Route::get('delete/{id}', array('as'=>'deleteView', 'uses'=>'CompanyController@deleteView'));

这是实际删除的路径:

Route::delete('deletecompany/{id}', array('as'=>'deleteCompany', 'uses'=>'CompanyController@destroy'));

这是检查用户是否是预期用户的功能。

private function companyBelongsToUser($id){
        $company = Company::find($id);
        if($company->user_id == Auth::user()->id){
            return true;
        }
        return false;
    }

【问题讨论】:

  • 你说的“把页面扔给我”是什么意思?你得到什么错误?
  • 没有错误信息,只是返回页面。

标签: authentication controller laravel-5.1 soft-delete laravel-blade


【解决方案1】:

终于解决了。主要问题是我试图在运行时检索不可用的公司 id。

令我惊讶的是,Laravel 已经关心我尝试手动执行的操作,我所做的只是传递一个通用 id,然后 Laravel 找出了我要查询的公司并完成了这项工作。

public function destroy($id)
    {
        $company = Company::findOrFail($id);
        if(!$company->user_id === Auth::user()->id)
        {
            return redirect()->route('companyindex')->with('message', 'Sorry, you cannot delete this company');
        }else{
            $company->delete();
            return redirect()->route('companyindex')->with('message', 'Company successfully deleted.');
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多