【问题标题】:laravel bulk insertion array to string conversionlaravel 批量插入数组到字符串的转换
【发布时间】:2017-04-03 21:23:24
【问题描述】:

我知道在 Laravel 中还有其他关于批量插入的问题。但是当我尝试将它存储在数据库中时,我遇到了一个问题。

我正在使用insert() 进行批量插入。我有一组来自request 的数据。我以前从未使用过insert 方法。它抛出一个错误:

数组到字符串的转换(SQL:插入questions (answer, question, questionnaire_id) 值(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'); 
}

编辑:

这是由jquery附加的html代码,用户可以添加多个问题

'<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结果

【问题讨论】:

  • 试试这个; Question::create($request-&gt;all());
  • 我认为 create 不存储批量数据?

标签: php arrays laravel bulkinsert


【解决方案1】:

如果您想使用insert() 进行批量插入,您应该为其准备数据。结构应该是一个数组数组,就像这个例子:

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

【讨论】:

  • 我知道这一点,但我很困惑。我在db 中有字段questionanswer 现在我会给什么而不是你给? $data = ['??' => '??'];好的字段我可以给$data = [ 'question' =&gt; '??'];,但是另一个呢?我不知道这里会发生什么?谢谢
  • @QasimAli 我不知道你使用的是什么数据结构,但看起来你的数据应该是这样的['answer' =&gt; 'Seventeen ducks', 'question' =&gt; 'How many ducks?', 'questionnaire_id' =&gt; 15]
  • 是的,数据应该是这样的,但如果我很烦人,请多多包涵。到目前为止,我很困惑。假设我在输入字段中添加了how many ducks ??我将如何告诉 laravel 从它的每个索引中获取它? question => What to give here? to grab the questions of input field?
  • @QasimAli 我看不出你是如何获得这些数据的。请出示dd($data)的表格和结果。我猜用户可以为每个请求添加多个类似的问题和答案?
  • 我已经编辑了这个问题。请看一下快照和html
猜你喜欢
  • 2018-09-28
  • 2015-07-30
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 2017-01-14
相关资源
最近更新 更多