Изменить формат объекта в laravel? - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть 2 пользователя таблицы и cuti (на английском языке это PaidLeave). в таблице у пользователей есть такой столбец, как

Пользователи: идентификатор, имя, адрес электронной почты, cuti и т. д.

в этой функции магазина, я хочу уменьшить это cuti в таблице Users (по умолчанию это значение равно 12 (int))

public function store_cuti(Request $request)
{

    $this->validate($request,[
        'berkas' => 'mimes:pdf'
    ] );


    $users = new Data_cuti;
    $users->user_id              = $request->user_id ;
    $users->nama_surat           = $request->nama_surat ;
    $users->tgl_surat            = $request->tgl_surat ;
    $users->durasi_cuti          = $request->durasi_cuti ;
    $users->tgl_mulai            = $request->tgl_mulai ;
    $users->status               = $request->status ;
    $users->berkas               = $data;

    $input = $request->input('durasi_cuti');

    $cuti = DB::table('users')->select('cuti')->where('id',$request->user_id)->first();
        if($request->input('durasi_cuti') > $cuti){
            return 'wrong input';
        }
        elseif($cuti > $request->input('durasi_cuti')){
            DB::table('users')->where('id', $request->user_id)->update(['cuti' => DB::raw("GREATEST(cuti - $input, 0)")]);

        }
        else{
            return ('error , tidak ada input');
        }

    dd($cuti);
    // $users->save();
    // return redirect ('cuti_pegawai')->with('success', 'Input Succes');


}

эта проблема заключается в этой строке

$cuti = DB::table('users')->select('cuti')->where('id',$request->user_id)->first();

если я это сделаю, я получу:

    {#480 ▼
  +"cuti": "10"
  }

я думаю, что проблема с этой строкой

 if($request->input('durasi_cuti') > $cuti) 

это значение не является объектом. как изменить это ** + "cuti": "10" ** на 10?

Ответы [ 3 ]

1 голос
/ 01 ноября 2019

Вы сравниваете свое состояние с объектом, так что здесь вы можете сделать одну вещь.

сравнить со значением $cuti->cuti

$cuti = DB::table('users')->select('cuti')->where('id',$request->user_id)->first();
        if($request->input('durasi_cuti') > $cuti->cuti){
            return 'wrong input';
        }
        elseif($cuti->cuti > $request->input('durasi_cuti')){
            DB::table('users')->where('id', $request->user_id)->update(['cuti' => DB::raw("GREATEST(cuti - $input, 0)")]);

        }
        else{
            return ('error , tidak ada input');
        }
1 голос
/ 01 ноября 2019

$cuti - это объект.

, поэтому вам нужно получить значение поля по

$cuti->cuti
0 голосов
/ 01 ноября 2019

Если вам нужно только одно значение из записи, вы можете сделать это с помощью Query Builder, используя метод value:

$cuti = DB::table('users')->where('id', $request->user_id)->value('cuti');

Документы Laravel 6.x - Query Builder - Получение результатов- Извлечение одной строки / столбца из таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...