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

Posted

技术标签:

【中文标题】SQLSTATE[HY000]:一般错误:1364(Laravel 用 eloquent 创建新行)【英文标题】:SQLSTATE[HY000]: General error: 1364 (Laravel create new row with eloquent) 【发布时间】:2017-02-23 16:51:26 【问题描述】:

在 Laravel 中,我有一个控制器,它接受来自 ajax 的请求,并将数据插入 DB 表中,以下代码运行良好

-Laravel 控制器功能

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_namexyw, h, r, shape, fill, q_id, q_option, updated_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()->save($formcoord )”。 非常感谢任何帮助

最好的问候。

【问题讨论】:

【参考方案1】:

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

做:

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

【讨论】:

非常感谢,现在完美运行,我刚刚开始使用 laravel,非常感谢您的帮助

以上是关于SQLSTATE[HY000]:一般错误:1364(Laravel 用 eloquent 创建新行)的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE [HY000]:一般错误:1364 字段“标题”没有默认值

SQLSTATE [HY000]:一般错误:1364 字段 'uID' 没有默认值

SQLSTATE [HY000]:一般错误:1364 字段“author_id”没有默认值

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

SQLSTATE[HY000]:一般错误:1364 字段“parent_id”没有默认值

错误 SQLSTATE [HY000]:一般错误:1364 字段“名称”没有默认值(SQL:插入“收藏夹”()值())