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:插入
formcoords
(field_name
,x
,y
,w
,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 创建新行)