SQLSTATE [HY000]:一般错误:1364(Laravel用eloquent创建新行)

时间:2017-02-23 16:51:27

标签: php ajax laravel

在Laravel中我有一个控制器从ajax接收请求,并在数据库表中插入数据,以下代码运行良好

-Laravel controller function

public function updateFormcoords(Request $data, Form $form)
{
    if ($data->ajax()){
        $formcoord=new Formcoord;
        $formcoord->field_name=$data->input('field_name');          
        $formcoord->x=$data->input('x');
        $formcoord->y=$data->input('y');
        $formcoord->w=$data->input('w');   
        $formcoord->h=$data->input('h');
        $formcoord->r=$data->input('r');
        $formcoord->shape=$data->input('shape');
        $formcoord->fill=$data->input('fill'); 
        $formcoord->q_id=$data->input('q_id');
        $formcoord->q_option=$data->input('q_option');*/
        $form->formcoords()->save($formcoord); 
    }
} 

- ajax请求如下:

        $.ajax({
            async: false,
            url: {{ route(updateFormcoords) }},
            headers: {"X-CSRF-TOKEN": token},
            type: 'POST',
            dataType: 'json',
            data: {field_name:boxes[i].field_name, x: x, y: y, w: w, h: h, r: r, shape: boxes[i].shape, fill: boxes[i].fill.substring(1), multiMark: boxes[i].multiMark, q_id: boxes[i].q_id, q_option: boxes[i].q_option, _token: token}          
        });  

- 最后溃败是以下

Route::post('/createform/{form}/update', ['as' => 'updateFormcoords', 'uses' =>'FormController@updateFormcoords']);

所有这一切都工作得很好,但我真正想要的是用$ request-> all()创建所有字段,所以我不需要按字段写字段DB,换句话说,这就是我想要做的事情:

   public function updateFormcoords(Request $data, Form $form)
    {
        if ($data->ajax()){
            $formcoord=new Formcoord;
            $formcoord->create($data->all());
            $form->formcoords()->save($formcoord); 
        }
    }  

然后出现以下错误

  

" SQLSTATE [HY000]:常规错误:1364字段' form_id'没有   默认值(SQL:插入formcoordsfield_namexy,   whrshapefillq_idq_optionupdated_at,   created_at)值(asdf,0.08479087452471483,0.018527667984189724,   0.09125475285171103,0.06027667984189724,0,10,91e57b,0,0,2017-02-23 16:13:00,2017-02-23 16:13:00))"

我不明白,因为我认为Laravel eloquent应该在父DB表变量中保存行时自动填充form_id字段(在代码行“$ form-> formcoords() - >保存(formcoord $)”。 我非常感谢任何帮助

最好的问候。

1 个答案:

答案 0 :(得分:2)

不要创建,创建将尝试创建行,但尚未将其与任何表单相关联。

执行:

 $formcoord=new Formcoord($data->all());
 $form->formcoords()->save($formcoord);