Laravel дублирует все поля формы, используя blade-сервер, и вставляет несколько строк из одного запроса, используя eloquent

Я хочу добавить еще одну кнопку формы, которая будет дублировать все поля моей формы, но все равно останется одной кнопкой отправки и передаст все данные этого в контроллер, чтобы вставить ее с помощью одного запроса.

Здесь create.blade.php что открывает форму

@extends('encoder-dashboard.layouts.app')

@section('css')
<link rel="stylesheet" href="/css/datepicker.css">
@endsection

@section('content')
<section class="content-header">
<h1>
Add New Analysis Request
</h1>
</section>
<div class="content">
@include('adminlte-templates::common.errors')
<div class="box box-primary">

<div class="box-body">
<div class="row">
{!! Form::open(['route' => 'encoder.analysis-request.store']) !!}

@include('encoder-dashboard.analysis-request.fields')

{!! Form::close() !!}
</div>
</div>
</div>
</div>
@endsection

@section('scripts')
<script src="/js/datepicker.js"></script>

<script>
$('#datepicker').datepicker({
autoclose: true
});
</script>
@endsection

И вот поля, перечисленные в fields.blade.php

<!-- Client Id Field -->
<div class="form-group col-sm-6">
{!! Form::label('client_id', 'Client Name:') !!}
{!! Form::select('client_id[]', $client, null, ['class' => 'form-control','required'])!!}
</div>

<!-- Password Field -->
<div class="form-group col-sm-6">
{!! Form::label('sample_code', 'Sample Code:') !!}
{!! Form::text('sample_code[]', null, ['class' => 'form-control','required']) !!}
</div>

<!-- Password Field -->
<div class="form-group col-sm-6">
{!! Form::label('sample_description', 'Description:') !!}
{!! Form::text('sample_description[]', null, ['class' => 'form-control','required']) !!}
</div>

<!-- Password Field -->
<div class="form-group col-sm-6">
{!! Form::label('quantity', 'Quantity:') !!}
{!! Form::number('quantity[]', null, ['class' => 'form-control','required']) !!}
</div>

<!-- Password Field -->
<div class="form-group col-sm-6">
{!! Form::label('analysis_requested', 'Analysis Request:') !!}
{!! Form::text('analysis_requested[]', null, ['class' => 'form-control','required']) !!}
</div>

<!-- Password Field -->
<div class="form-group col-sm-6">
{!! Form::label('special_instruction', 'Special Instruction:') !!}
{!! Form::text('special_instruction[]', null, ['class' => 'form-control','required']) !!}
</div>

<!-- Submit Field -->
<div class="form-group col-sm-12">
{!! Form::submit('Save', ['class' => 'btn btn-success', 'onClick' => 'this.form.submit(); this.disabled=true; this.value="Saving…";']) !!}
<a href="{!! route('encoder.analysis-request.index') !!}" class="btn btn-default">Cancel</a>
</div>

Все поля выше из формы будут продублированы и переданы в виде массива, верно? Как мне это сделать, может быть, используя jQuery или простой vanila JS?

и если я передам эти данные, это будет выглядеть так.

array:8 [▼
"_token" => "xEGtr4h0f4gim0sLvABZivvq36UNaRHWJ08PMWTI""client_id" => array:1 [▼
0 => "1"]
"sample_code" => array:1 [▼
0 => "eqwewqeqewqrwereqwe"]
"sample_description" => array:1 [▼
0 => "dasdsadsadsadasd"]
"quantity" => array:1 [▼
0 => "232"]
"analysis_requested" => array:1 [▼
0 => "dsadsadsadsadsad"]
"special_instruction" => array:1 [▼
0 => "dwqewqewqewqewqeq"]
]

Это мой запрос ниже при вставке одной записи.

$analysis_request = $this->analysisrequestRepository->create([
'client_id' => $input['client_id'],
'sample_code' => $input['sample_code'],
'sample_description' => $input['sample_description'],
'quantity' => $input['quantity'],
'analysis_requested' => $input['analysis_requested'],
'special_instruction' => $input['special_instruction'],
'status' => 'for_testing'
]);

$id = $analysis_request->id;

$request_actors = RequestActors::create([
'request_id' => $id,
'encoder_id' => Auth::guard('encoder')->user()->id,
'microbiologist_id' => null
]);

это мой запрос выше для вставки одной записи. Я также выполнил другой запрос, чтобы вставить идентификатор запроса, который имеет отношение к запросу на анализ, который вставляется в первый запрос.

Теперь, если я сделаю это, чтобы вставить много, я сделаю массив внутри массива и вставлю его в каждую запись, верно? Как это.

$data = array(
array(
'client_id' => $input['client_id'],
'sample_code' => $input['sample_code'],
'sample_description' => $input['sample_description'],
'quantity' => $input['quantity'],
'analysis_requested' => $input['analysis_requested'],
'special_instruction' => $input['special_instruction'],
'status' => 'for_testing'
),
// and so on.
);

AnalysisRequest::insert($data);

Но у меня была ошибка в коде выше, это говорит о том, что Преобразование массива в строку

Или будет лучше, если я сделаю для каждого?

Моя единственная цель здесь состоит в том, чтобы выполнить запрос на вставку, который зависит от добавляемых записей.

Ценю, если кто-то может помочь.
Заранее спасибо.

0

Решение

Вы получаете массив массива, и вы хотите поместить (например) в client_id один массив [1]
По этой причине у вас есть «преобразование массива в строку».
Ты можешь сделать

$data = array(
array(
'client_id' => $input['client_id'][0],
'sample_code' => $input['sample_code'][0],
'sample_description' => $input['sample_description'][0],
'quantity' => $input['quantity'][0],
'analysis_requested' => $input['analysis_requested'][0],
'special_instruction' => $input['special_instruction'][0],
'status' => 'for_testing'
),
// and so on.
);

AnalysisRequest::insert($data);
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector