Как отправить пользовательское значение из контроллера Laravel - PullRequest
2 голосов
/ 01 июля 2019

Я пытаюсь добавить значение из контроллера и отправить его в mysql вместе с другими входными данными, которые я получаю из представления.Как мне это сделать?

Я попытался использовать array_merge, попытался поместить их в одну и ту же переменную и отправить ее с помощью команды Laravel, но безрезультатно.

Вот код

Значение

 $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 ]

1 голос
/ 01 июля 2019

Ошибка произошла из-за того, что ваши таблицы инструментов столбца nim не имеют значения NULL и не имеют значения по умолчанию.

Внутри вашей модели приборной панели

protected $fillable = [... , 'nim'];

Когда вы пытались создать панель мониторинга, вы не присваиваете значение nim , которое вызывает ошибку.

Если вы хотите, чтобы столбец nim обнулялся, вы можете добавить функциональность в свой файл миграции.

Файл миграции

...
$table->string('nim')->nullable();
...

Перезапустите миграцию с помощью php artisan migrate: refresh

Если вы хотите проверить вручную, попробуйте в DashboardController

//If request does not have nim
if(!$request->has('nim') && !empty($request->nim)){
    $request->nim = "";
}
1 голос
/ 01 июля 2019

Заменить функцию хранилища, как показано ниже

$dashboard = new Dashboard();
$dashboard->nama = $request->nama;
$dashboard->alamat = $request->alamat;
$dashboard->fakultas = $request->fakultas;
$dashboard->nim = $nim;
$dashboard->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...