【问题标题】:How to insert two serial numbers with one insert into如何用一个插入插入两个序列号
【发布时间】:2019-04-19 11:28:36
【问题描述】:

我尝试让同时借出两本书成为可能,我的问题是只有一个值被转发。表单如下所示:

在视图中我尝试将字段重命名为“序列号2”,因为我认为他只是因为同名而忽略了第二个序列号。

这是我的观点:

               <div class="card">
                <div class="card-header">{{ __('Lend a book') }}</div>

                <div class="card-body">
                    <form method="POST" action="{{ route('borrow.store') }}">
                        @csrf

                        <div class="form-group row">
                            <label for="serialnumber" class="col-md-4 col-form-label text-md-right">{{ __('Please scan the Serialnumber of the book') }}</label>

                            <div class="col-md-6">
                                <input id="serialnumber" type="text" class="form-control{{ $errors->has('serialnumber') ? ' is-invalid' : '' }}" name="serialnumber" value="{{ old('serialnumber') }}" required   @if (Session::has('autofocus')) autofocus @endif>

                                @if ($errors->any())
                                    <div class="alert alert-danger">The book is not in stock.
                                        <ul>

                                        </ul>
                                    </div>
                                @endif
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="serialnumber" class="col-md-4 col-form-label text-md-right">{{ __('') }}</label>

                            <div class="col-md-6">
                                <input id="serialnumber" type="text" class="form-control{{ $errors->has('serialnumber') ? ' is-invalid' : '' }}" name="serialnumber" value="{{ old('serialnumber') }}" required   @if (Session::has('autofocus')) autofocus @endif>

                                @if ($errors->any())
                                    <div class="alert alert-danger">The book is not in stock..
                                        <ul>

                                        </ul>
                                    </div>
                                @endif
                            </div>
                        </div>



                        <div class="form-group row">
                          <label for="comment" class="col-md-4 col-form-label text-md-right">{{ __('comment') }}</label>
                          <div class="col-md-6">
                        <!--                        <input id="ma_id" type="text" class="form-control{{ $errors->has('ma_id') ? ' is-invalid' : '' }}" value="{{ old('ma_id') }}" required> -->
                            <input id="comment" type="text-field" class="form-control" name="comment" placeholder="Test">


                            @if ($errors->has('comment'))
                            <span class="invalid-feedback">
                              <strong>{{ $errors->first('comment') }}</strong>
                            </span>
                            @endif
                        </div>
                        </div>


                          <div class="form-group row">
                            <label for="ma_id" class="col-md-4 col-form-label text-md-right">{{ __('scan membercard to identify yourself') }}</label>
                            <div class="col-md-6">
  <!--                        <input id="ma_id" type="text" class="form-control{{ $errors->has('ma_id') ? ' is-invalid' : '' }}" value="{{ old('ma_id') }}" required> -->
                              <input id="ma_id" type="password" class="form-control" name="ma_id" required>


                              @if ($errors->has('ma_id'))
                              <span class="invalid-feedback">
                                <strong>{{ $errors->first('ma_id') }}</strong>
                              </span>
                              @endif
                          </div>
                        </div>







                      <div class="form-group row mb-0">
                            <div class="col-md-6 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    {{ __('send') }}
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

@endsection

这是我的控制器:

  public function store(bookRequest $request)
{

  //if( !book::find($request->get('serialnumber'))->exists() ) {
    $this->middleware('guest');

    request()->validate([
      'serialnumber' => 'required',
      'serialnumber' => 'required',
      'ma_id' => 'required'
    ]);


    book::create($request->all());


    return redirect()->route('book.index');


}

没有错误,但问题是他如上所述只将一个序列号写入数据库,而完全忽略了进入第二个字段的另一个序列号。我的问题是我必须调整什么,以便可以将具有相同数据的第二个序列号写入数据库。

【问题讨论】:

    标签: html mysql sql laravel


    【解决方案1】:

    在同一个表单中不能有两个具有相同名称的项目(例如serialnumber),否则只会处理一个值。请检查浏览器中的检查工具。如果您需要具有相同“名称”的多个输入,请将 [] 添加到名称(例如 name=serialnumber[])。

    更多信息HTML 5 spec

    另一方面,您有多个具有相同 ID 的项目。这是另一个需要在某个时候解决的问题。

    在控制器中获取数据后,您必须相应地生成插入数据

    $requestData = $request->validated();
    
    $data = [
        [
           'serialnumber' => $requestData['serialnumber'][0],
           'comment'      => $requestData['comment'],
           'ma_id'        => $requestData['ma_id']
        ],
        [
           'serialnumber' => $requestData['serialnumber'][1],
           'comment'      => $requestData['comment'],
           'ma_id'        => $requestData['ma_id']
        ]
    ];
    
    Book::insert($data);
    

    【讨论】:

    • 我收到此错误:传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型、给定字符串、调用和以下注释:“创建”数组:1 [▼ 0 => 数组:5 [▼ “_token” => “NIrq67cB51EJLCQvTsBxLxcII2tpvCbIWkPJxLIT” “序列号” => 数组:2 [▼ 0 => “4004358118100009” 1 => “4002578018100010”] “评论” => “ma_id” > "0000000003" "索引" => "值" ] ]
    • 在使用book::create($request-&gt;all());之前必须先构造数据
    【解决方案2】:

    将输入的名称设为数组。

    name="serialnumber" 替换为name="serialnumber[]"。提交表单后,您将收到一个包含两个序列号的数组。

    【讨论】:

    • 我收到此错误:传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型、给定字符串、调用和以下注释:“创建”数组:1 [▼ 0 => 数组:5 [▼ “_token” => “NIrq67cB51EJLCQvTsBxLxcII2tpvCbIWkPJxLIT” “序列号” => 数组:2 [▼ 0 => “4004358118100009” 1 => “4002578018100010”] “评论” => “ma_id” >“0000000003”“索引”=>“值”]]
    • 之前您的代码需要字符串。由于多个值,现在它是一个数组。所以你必须在发生错误的地方处理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多