hihihihi
hihihihi

Reputation: 88

Object of class Illuminate\Support\Collection could not be converted to int with json_encode()

I have a multiple query with joins condition and I'm trying to pass an array from my controller to my model then pass the return result of the query. I get this error:

Object of class Illuminate\Database\Eloquent\Collection could not be converted to int

Can someone help me to find the cause of this?

Controller

  public function get_session_leave_tagv2()
     {
          $employee = [0 => 0];
          if(Session::has('employee_leave_tag'))
          {
               $employee = Session::get('employee_leave_tag');
          }
          $emps = Tbl_payroll_leave_employeev2::select('payroll_employee_id')->whereIn('payroll_leave_employee_id',$employee)->get();

          $emp = Tbl_payroll_leave_schedulev2::getallemployeeleavedata($emps)->get();

          $data['new_record'] = $emp;

          return json_encode($data);
     }

Tbl_payroll_leave_schedule.php

  public function scopegetallemployeeleavedata($query, $payroll_employee_id=0)
    {

            $query->join('tbl_payroll_leave_employee_v2','tbl_payroll_leave_schedulev2.payroll_leave_employee_id','=','tbl_payroll_leave_employee_v2.payroll_leave_employee_id')

             ->join("tbl_payroll_employee_basic","tbl_payroll_leave_employee_v2.payroll_employee_id","=","tbl_payroll_employee_basic.payroll_employee_id")
             ->join("tbl_payroll_leave_tempv2","tbl_payroll_leave_employee_v2.payroll_leave_temp_id","=","tbl_payroll_leave_tempv2.payroll_leave_temp_id")
             ->select(DB::raw('tbl_payroll_employee_basic.payroll_employee_id , tbl_payroll_employee_basic.payroll_employee_display_name, tbl_payroll_leave_tempv2.payroll_leave_type_id, tbl_payroll_leave_employee_v2.payroll_leave_temp_hours, sum(tbl_payroll_leave_schedulev2.consume) as total_leave_consume, (tbl_payroll_leave_employee_v2.payroll_leave_temp_hours - sum(tbl_payroll_leave_schedulev2.consume)) as remaining_leave'))
             ->groupBy('tbl_payroll_leave_employee_v2.payroll_leave_temp_id');

             if ($payroll_employee_id != 0) 
             {
                $query->whereIn('tbl_payroll_leave_employee_v2.payroll_employee_id', $payroll_employee_id);
             }

        return $query;
    }

Upvotes: 0

Views: 6054

Answers (1)

rsakhale
rsakhale

Reputation: 1036

If you are using a controller, they avoid manual json_encode, prefer below way

public function get_session_leave_tagv2()
{
    $employee = [0 => 0];
    if(Session::has('employee_leave_tag'))
    {
       $employee = Session::get('employee_leave_tag');
    }
    $emps = Tbl_payroll_leave_employeev2::select('payroll_employee_id')->whereIn('payroll_leave_employee_id',$employee)->get();

    $emp = Tbl_payroll_leave_schedulev2::getallemployeeleavedata($emps)->get();

    $data['new_record'] = $emp;

    return response()->json($data);
}

Upvotes: 2

Related Questions