更新数据透视表laravel 5中的数据

时间:2018-07-09 10:16:51

标签: php laravel

我有很多对很多的关系,并且有一个数据透视表,现在我想用用户发送的表单来更新数据透视表数据。例如,这里将客户分配给卖方。这是我的代码: 在途中:

Route::get('admin/client/assign','ClientController@assignsellman');

控制器:

public function assignsellman(Request $request){
    $user = User::all();
    $client_list = Client::all();
    $client = Client::with('sellmanlist')->firstOrFail();
    $sellman = $request->input('sellman');
    $client->sellmanlist()->attach($sellman);
    return view('admin.client.assign',compact('client_list','user'));

}

最后这是查看文件的形式,我想获取2个变量,一个是客户的ID,第二个是卖方的ID

    <form action="/admin/client/" method="post">
                <input type="hidden" name="_method" value="PUT">
                {{ csrf_field() }}
                <div class="row">
                    <div class="col-xs-4">
                        <div class="form-group">
                            <label for="client">مشتری</label>
                            <select class="select-search select2-hidden-accessible" tabindex="-1" aria-hidden="true"
                                    name="client">
                                @foreach($client_list as $client_lists)
                                    <option value="">{{$client_lists->title}}</option>
                                @endforeach
                            </select>
                        </div>
                    </div>
                    <div class="col-xs-4 text-center">
                        <i class="icon-arrow-left7 mr-3 icon-3x" style="font-size: 130px"></i>
                        <h4>ارجاع به</h4>
                    </div>
                    <div class="col-xs-4">
                        <div class="form-group">


                            <div class="form-group">
                                <label for="sellman">کارشناس فروش</label>
                                <select class="select-search select2-hidden-accessible" tabindex="-1"
                                        aria-hidden="true" name="sellman">
                                    @foreach($user as $users)
                                        <option value="1">{{$users->name}}</option>
                                    @endforeach
                                </select>
                            </div>

                        </div>
                    </div>

                </div>
                @if ($errors->any())
                    <div class="alert alert-danger">
                        <ul>
                            @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                            @endforeach
                        </ul>
                    </div>
                @endif
                <button type="submit" class="btn btn-primary">تایید</button>
            </form>

使用此代码,我会收到此错误

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message

感谢帮助

2 个答案:

答案 0 :(得分:1)

这是因为您创建的路由是HTTP GET,并且您在表单中使用的是HTTP Post。

<form action="/admin/client/" method="post">

尝试切换到GET方法,它应该可以工作

<form action="/admin/client/" method="get">

或将路线切换到

Route::post('admin/client/assign','ClientController@assignsellman');

请查看不同的HTTP动词并将其应用于您的需求。

  

https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

答案 1 :(得分:1)

编辑您的路线

Route::post('admin/client/','ClientController@assignsellman');