我已经阅读了之前的帖子Storing Array of Arrays让我首先展示我尝试过的内容
代码:
public function createQuestions(Request $request)
{
$elements = 0;
while($elements < count($data["question"])) {
$dataArray[] = array(
question' => $data['question'][$elements],
'answer' => $data['answer'][$elements],
'questionnaire_id' => $data['questionnaire_id'][$elements],
'type' => $data['type'][$elements],
'flag' => $data['flag'][$elements],
'choice' => $data['choice'][$elements],
'created_at' => Carbon\Carbon::now(), // only if your table has this column
'updated_at' => Carbon\Carbon::now(), // only if your table has this column
);
$elements++;
}
Question::create($dataArray);
return back()->with('message', 'Questionnaire is being created successfully');
}
我面临的问题是不同的。每当我运行代码。它会抛出错误
未定义的偏移量:1
其次它会抛出错误
一般错误:1364字段&#39;回答&#39;没有默认值。每个数据库列都会抛出此错误。
我已声明这些是可填写的。因此不应该有任何问题。
protected $fillable = [
'question', 'idea_id', 'answer', 'type', 'choice', 'flag',
];
我已将app
名称更改为Questionnaire
这可能是问题吗?
答案 0 :(得分:1)
似乎缺少答案。
尝试类似:
...
'answer' => (array_key_exists($elements,$data['answer']))?$data['answer'][$elements]:"", // default value
...
老实说,最好的解决方案是改变您的迁移:
$table->text()->default("");
但是这里的问题似乎是帖子请求中缺少的参数。
答案 1 :(得分:0)
您可以使用Eloquent的方法insert
:
Question::insert($dataArray);
注意:这不会更新或设置时间戳。但是您手动在$dataArray
中添加了这些时间戳,因此您已自行修复此问题。