【问题标题】:updating data into pivot table将数据更新到数据透视表
【发布时间】:2018-07-09 20:50:55
【问题描述】:

我有一个多对多的关系,现在我想知道如何使用用户发送到应用程序的表单来更新我的表格。这是我的代码 路线:

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

这是我的控制器

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

}

最后是视图:

 <form action="/admin/client/" method="get">
                <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="" tabindex="-1" aria-hidden="true"
                                    name="client">
                                @foreach($client_list as $client_lists)
                                    <option value="{{$client_lists->id}}">{{$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="" tabindex="-1"
                                        aria-hidden="true" name="sellman">
                                    @foreach($user as $users)
                                        <option value="{{$users->id}}">{{$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>

当我提交此表单时,它会重定向到这样的 url ?_method=PUT&_token=mvf0i2FaxSBhDdJroqD6L1901QdvcR4b3tmgwekw&client=3&sellman=3 数据库什么也没发生。知道我的错是什么吗?

【问题讨论】:

  • 你的路由无效 Route::put('admin/client/','ClientController@assignsellman');
  • 我是否也应该更改表单的方法?因为当我将路线更改为你所说的时,我得到页面未找到错误
  • 从 html 中添加 action='post' 并添加新路由 Route::put('admin/client/','ClientController@assignsellman');
  • 我认为您需要阅读有关方法、网址等的信息。在您的情况下,您需要 2 条路线,首先用于返回表单,其次用于保存表单中的数据
  • @foreach($user as $users) 它看起来不正常,更改为 @foreach($users as $user) 并在控制器中 $users = User::all();///紧凑(“用户”);

标签: php laravel


【解决方案1】:

在您的情况下,您需要 2 条路线,第一条用于返回表单,第二条用于保存表单中的数据。 您的路线:

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

控制器:

public function assignsellman(Client $client)
{
   $user = User::all();
   $client_list = Client::all();

   return view('admin.client.assign',compact('client_list','user'));
}

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

查看:

<form action="/admin/client/assign" method="post">
            {{ csrf_field() }}
            <div class="row">
                <div class="col-xs-4">
                    <div class="form-group">
                        <label for="client">مشتری</label>
                        <select class="" tabindex="-1" aria-hidden="true"
                                name="client">
                            @foreach($client_list as $client_lists)
                                <option value="{{$client_lists->id}}">{{$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="" tabindex="-1"
                                    aria-hidden="true" name="sellman">
                                @foreach($user as $users)
                                    <option value="{{$users->id}}">{{$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>

【讨论】:

  • 谢谢@j.Doe 好像我只是把路线搞砸了,我必须再次完整阅读它们。谢谢你节省了我很多时间。
  • 我看到的还有一件奇怪的事情!!知道为什么每次将数据保存在数据库中两次吗? :|
  • @Farshad 更新控制器中的代码,需要删除两行
  • 如果我删除那两行,无论我在表单中选择什么,client_id 都将保持为 1 :(
  • 好的,我必须将第二个属性作为数组传递给我的 atach 方法,所以它就像这样 $client->sellmanlist()->attach($sellman,['client_id' => $client_name]);
猜你喜欢
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 2014-06-16
相关资源
最近更新 更多