我正在尝试从控制器添加一个值,并将其与从视图中获取的其他输入一起发送到mysql。我应该怎么做?
我尝试使用array_merge,尝试将它们放在相同的变量中,并使用Laravel的create进行发送,但无济于事。
这是代码
价值
$id = 0;
$id++;
$time = "2019-01-01 00:00:00";
$date = new Carbon( $time );
$d = $date->format('Y');
$fmipa = 0;
$fkh = 0;
$lastNumber = 0;
$fk = $request->get('fakultas');
if($fk == 'FMIPA'){
$fmipa++;
$fk = 42;
if($fmipa < 10){
$fmipa="00". $fmipa;
$lastNumber = $fmipa;
}else if($fmipa < 100){
$fmipa="0" . $fmipa;
$lastNumber = $fmipa;
}else{
$fmipa = $fmipa;
$lastNumber = $fmipa;
}
}else{
$fkh++;
$fk = 41;
if($fkh < 10){
$fkh="00". $fkh;
$lastNumber = $fkh;
}else if($fkh < 100){
$fkh="0" . $fkh;
$lastNumber = $fkh;
}else{
$fkh = $fkh;
$lastNumber = $fkh;
}
}
$nim = $d . $fk . "101" . $lastNumber;
Store()函数
$validator = Validator::make($request->input(), array(
'nama' => 'required',
'alamat' => 'required',
'fakultas' => 'required',
));
if ($validator->fails()) {
return response()->json([
'error' => true,
'messages' => $validator->errors(),
], 422);
}
$mahasiswa = Dashboard::create($request->all() + ['nim' => $nim]);
return response()->json([
'error' => false,
'mhs' => $mahasiswa,
], 200);
我将它们分开以使其易于阅读,但是如果您想知道值的代码是否正确在store()函数中。
我希望它将值发布到数据库,但是我从XHR的响应中得到的是
500内部服务器错误
和
SQLSTATE [HY000]:常规错误:1364字段'nim'没有默认值
答案 0 :(得分:1)
替换存储功能如下
$dashboard = new Dashboard();
$dashboard->nama = $request->nama;
$dashboard->alamat = $request->alamat;
$dashboard->fakultas = $request->fakultas;
$dashboard->nim = $nim;
$dashboard->save();
答案 1 :(得分:1)
发生错误是因为您的列 nim 的表仪表板不可为空,并且没有默认值。
在您的模型仪表板内部
protected $fillable = [... , 'nim'];
当您尝试创建仪表板时,您并没有赋予 nim 值,这会导致错误。
如果您希望nim列可为空,则可以在迁移文件中添加功能。
迁移文件
...
$table->string('nim')->nullable();
...
使用php artisan migration:refresh重新运行迁移
如果要手动检查,可以在DashboardController中尝试
//If request does not have nim
if(!$request->has('nim') && !empty($request->nim)){
$request->nim = "";
}