如何从laravel控制器发布自定义值

时间:2019-07-01 02:26:48

标签: laravel eloquent

我正在尝试从控制器添加一个值,并将其与从视图中获取的其他输入一起发送到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'没有默认值

2 个答案:

答案 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 = "";
}