2017-02-09 18 views
-1

есть проблема, чтобы сохранить сразу несколько записей. Это моя формаLaravel сохранить несколько записей сразу

{!! Form::open(array('url'=>'pipeline/save?return='.$return, 'class'=>'form-horizontal','files' => true , 'parsley-validate'=>'','novalidate'=>' ')) !!} 
    @foreach($destinazioni as $destinazione) 
    <div class="col-md-2 col-md-offset-2 text-left"> 
     <input type="text" name="destination[]" readonly class="form-control" value="{{ $destinazione }}"/> 

    </div> 

    <div class="col-md-6 text-left"> 
     <select name="target[]" class="form-control"> 
     <option value="Nessuna">Seleziona...</option> 
     @foreach($campi->keys() as $target) 
     <option value="{{ $target }}"> {{ $target }} </option> 
     @endforeach 
     </select> 
    </div> 
    @endforeach 
     @if(!empty($profilo->set_attributi)) 
      @foreach($profilo->attributi as $attributo) 
      <div class="col-md-2 col-md-offset-2 text-left"> 
       <input type="text" name="destination[]" readonly class="form-control" value="{{ $attributo->nome_opzione }}"/> 
      </div> 
      <div class="col-md-6 text-left"> 
     <select name="target[]" class="form-control"> 
     <option value="Nessuna">Seleziona...</option> 
     @foreach($campi->keys() as $target) 
     <option value="{{ $target }}"> {{ $target }} </option> 
     @endforeach 
     </select> 
    </div> 
    @endforeach 
@endif 
<div style="clear:both"></div> 


        <div class="form-group" style="margin-top:5%"> 
        <label class="col-sm-4 text-right">&nbsp;</label> 
        <div class="col-sm-8"> 
        <button type="submit" name="apply" class="btn btn-info btn-sm" ><i class="icon-checkmark-circle2"></i> {{ Lang::get('core.sb_apply') }}</button> 
        <button type="submit" name="submit" class="btn btn-primary btn-sm" ><i class="icon-bubble-check"></i> {{ Lang::get('core.sb_save') }}</button> 
        <button type="button" onclick="location.href='{{ URL::to('pipeline?return='.$return) }}' " class="btn btn-warning btn-sm "><i class="icon-cancel-circle2 "></i> {{ Lang::get('core.sb_cancel') }} </button> 
        </div>  

        </div> 

     {!! Form::close() !!} 

Это контроллер, где я стараюсь обрабатывать вставки данных:

$rules = $this->validateForm(); 
    $validator = Validator::make($request->all(), $rules); 
    if ($validator->passes()) { 
     $request = array('destination' => $request->input('destination'), 'target' => $request->input('target')); 
     foreach ($request as $req) { 
      $destination = new Pipeline;   
      $destination->destination = $req->destination; 
      $destination->target = $req->target; 
      $destination->save(); 
     } 

     return Redirect::to('pipeline')->with('messagetext',\Lang::get('core.note_success'))->with('msgstatus','success'); 

Но на самом деле я получаю попытаться получить proprety недопущения ошибок объекта. Я также попытался с Pipeline :: вставить ($ данные) метод, но возвращать неправильные имена ошибки столбца

ответ

0

Если у кого-то есть эта проблема, я просто решил с помощью implode и explode $ request, а затем цикл с помощью cicle. Вполне легко.

function postSave(Request $request) 
    { 

     $rules = $this->validateForm(); 
     $validator = Validator::make($request->all(), $rules); 
     if ($validator->passes()) { 
     $idz = implode(",", $request->input('destination')); 
     $ids = explode(",", $idz); 
     $tgz = implode(",", $request->input('target')); 
     $tgs = explode(",", $tgz); 
     for ($i = 0; $i < count($ids); $i++) 
     { 
      $pipeline = new Pipeline; 
      $pipeline->destination = $ids[$i]; 
      $pipeline->target = $tgs[$i]; 
      $pipeline->save(); 
      $i = $i++; 

     } 
1

Если вы знаете, как строить массивы, просто создать массив с каждым объектом, как

$arrays = [ 
    'destination' => $req->destination, 
    'target'  => $req->target 
] 

Тогда вставить все ваши массивы в один присест

DB::insert($arrayOfArrays); 

Если вы все еще хотите, чтобы вставить так, как вы делаете, попробуйте с

Pipeline::create([ 
    ... 
]); 
+0

получил эту preg_replace ошибки(): несоответствие параметров, шаблон является строкой, в то время как замена является массивом – rubenSousa

+0

Какой метод вы используете? – EddyTheDove

+0

создал массив, а затем DB :: insert – rubenSousa