2016-11-20 58 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

试试这个; '问题::创建($ request-> all());' –

+0

我认为创建不存储批量数据? –

回答

1

如果您想要使用insert()进行批量插入,您应该为其准备数据。结构应该是一个阵列阵列,如下例所示:

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

我知道这一点,但我很困惑。我有'db'中的字段作为'question','answer'现在我会给你什么,而不是你给的? $ data = ['??' =>'??'];好吧,我可以给'$ data = ['question'=>'??'];'但是另一个呢?我不知道这里会发生什么?谢谢 –

+0

@QasimAli我不知道你使用的是什么数据结构,但它看起来像你的数据应该是这样的'['answer'=>'十七只鸭子','问题'=>'多少只鸭子? ','questionnaire_id'=> 15]' –

+0

是的,数据应该看起来像这样,但如果我感到恼怒,请耐心等待。截至目前我很困惑。假设我在输入字段中添加了“多少只鸭子?我如何告诉laravel从它的每个索引中获取? '问题'=>'这里给什么?抓住输入字段的问题?' –