2016-11-20 5 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'); 
} 

EDIT:

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

Я думаю, что создание не хранит объемные данные? –

ответ

1

Если вы хотите использовать insert() для массового ввода, вам следует подготовить данные для него. Структура должна быть массивом массивов, как в этом примере:

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

Я знаю это, но я в замешательстве. У меня есть поля в 'db' как' question', 'answer', что бы я дал вместо вас? $ data = ['??' => '??']; ok для поля i может дать '$ data = ['question' => '??'];' но как насчет другого? Я не знаю, что будет здесь? спасибо –

+0

@ QasimAli Я не знаю, какая именно структура данных вы используете, но похоже, что ваши данные должны выглядеть так: ['ответ' => 'Семнадцать уток', 'question' => 'Сколько уток? ',' questionnaire_id '=> 15] ' –

+0

Да, данные должны выглядеть так, но, пожалуйста, несите меня, если я раздражаю. на данный момент я довольно смущен. Предположим, я добавил 'сколько уток? 'В поле ввода? Как я могу сказать laravel, чтобы захватить это из каждого его индекса? 'question' =>' Что здесь дать? для захвата вопросов поля ввода? ' –

 Смежные вопросы

  • Нет связанных вопросов^_^