2016-11-20 6 views
1

Laravel에 일괄 삽입에 대한 다른 질문이 있습니다. 그러나 데이터베이스에 저장하려고 할 때 문제가 발생합니다.문자열 변환에 laravel 대량 삽입 배열

대량 삽입시 insert()을 사용하고 있습니다. request을 통해 오는 데이터 배열이 있습니다. 전에 insert 메서드를 사용한 적이 없습니다. 오류를 던지고 있습니다 :

Array to string conversion (SQL: insert into questions (answer , question , questionnaire_id) values (1995, What is model of your bike1, ?))

나는 설문지를 만들었습니다. 질문은 jQuery를 사용하여 버튼 클릭에 동적으로 추가됩니다. 여기

나는 데이터를 저장하는 방법을 시도하고있다 :

/** 
* Create questions 
* 
*/ 
public function createQuestions(Request $request) 
{ 
    // Insert new records 
    $data[] = $request->except('_token'); 
    Question::insert($data); 
    return back()->with('message', 'Questionnaire is being created successfully'); 
} 

편집 : 여기

This is the html code which is being appended by jquery and user can add multiple question

'<div class="question'"> 
    <div class="form-group">'+ 
     <label class="control-label col-md-4" for="question-type">Question Type:</label> 
      <div class="col-md-4">'+ 
       <select class="form-control question-type" id="'+counter+'"> 
      <option value="text" id='+counter+'>Text</option> 
      <option value="multiple" id="'+counter+'">Multiple Choice</option> 
      </select> 
     </div> 
    </div> 
<div class="form-group"> 
<label class="control-label col-md-4" for="question">Enter Question:</label> 
<div class="col-md-4"> 
<input type="text" name="question[]" class="form-control" />'+ 
    </div> 
<div class="col-md-4"> 
<button type="button" class="btn btn-danger btn-delete " id="'+counter+'">Delete Question</button> 
      </div> 
     </div> 
<div class="form-group txt-answer'+counter+'"> 
<label class="control-label col-md-4" for="answer">Answer:</label> 
<div class="col-md-4"> 
       '<input type="text" name="answer[]" id="answer" class="form-control" /> 
      </div> 
     </div> 
     <hr> 
    <div> 
</div> 

dd 결과

enter image description here

+0

시도해보십시오. 'Question :: create ($ request-> all()); ' –

+0

create는 대량 데이터를 저장하지 않는다고 생각하십니까? –

답변

1

대량 삽입을 위해 insert()을 사용하려는 경우 데이터를 준비해야합니다. 구조는 다음 예와 같이 배열 배열이어야합니다.

$data = [ 
      ['name' => 'Afghanistan', 'code' => 'AFG'], 
      ['name' => 'Albania', 'code' => 'ALB'], 
      ['name' => 'Algeria', 'code' => 'DZA'], 
     ]; 
+0

나는 이것을 알고 있지만 혼란 스럽다. 나는'db'에 필드를'question'으로,'answer'를 여러분 대신에 무엇을 줄 것인가? $ 데이터 = [ '??' => '??']]; 좋아, 나는 $ data = [ 'question'=> '??'];을 줄 수 있지만 다른 것은 어떨까요? 나는 무엇이 여기에 있을지 모른다. 감사합니다 –

+0

@QasimAli 사용중인 데이터 구조가 정확히 무엇인지 모르겠지만 데이터가 다음과 같이 보일 것 같습니다. [[ 'answer'=> '17 개의 오리', '질문'=> '얼마나 많은 오리입니까? ','questionnaire_id '=> 15]' –

+0

예, 데이터가 다음과 같아야합니다. 지금 나는 꽤 혼란 스럽다. 입력 필드에 '얼마나 많은 오리가 있습니까?'라고 추가했다고 가정합니다. 나는 모든 색인에서 그것을 얻기 위해 laravel에게 어떻게 말할 것인가? 'question' =>'여기서 무엇을 줄까요? 입력 필드의 질문을 잡으려고합니까? –