hihihihi
hihihihi

Reputation: 88

LARAVEL Invalid argument supplied for foreach() loop

I have a Session::get('employee_leave_tag'); that contains the payroll_leave_employee_id since data is not only one i used a foreach loop. But im having an error

Invalid argument supplied for foreach()

Can someone help me what's the cause why i am getting this error? Thanks.

     public function get_session_leave_tagv2()
     {
          $employee = [0 => 0];
          if(Session::has('employee_leave_tag'))
          {
               $employee = Session::get('employee_leave_tag');
          }

          $empdata = array();
          foreach($employee as $emp)
          {

                 $employee_id = Tbl_payroll_leave_employeev2::select('payroll_employee_id')
                                                          ->join('tbl_payroll_leave_schedulev2','tbl_payroll_leave_employee_v2.payroll_leave_employee_id','=','tbl_payroll_leave_schedulev2.payroll_leave_employee_id')
                                                          ->where('tbl_payroll_leave_schedulev2.payroll_leave_employee_id',$emp)
                                                          ->distinct()
                                                          ->get();

                    if(count($employee_id) == 0)
                    {
                         $empa = Tbl_payroll_employee_basic::join('tbl_payroll_leave_employee_v2','tbl_payroll_leave_employee_v2.payroll_employee_id','=','tbl_payroll_employee_basic.payroll_employee_id')->whereIn('tbl_payroll_leave_employee_v2.payroll_leave_employee_id',$emp)->get();
                         array_push($empdata,$empa);
                    }
                    else
                    {
                         $empb = Tbl_payroll_leave_schedulev2::getallemployeeleavedata($employee_id)->get();
                         array_push($empdata,$empb);
                    }                            

          }

          $data['new_record'] = $empdata;

          return json_encode($data);
     }

Upvotes: 0

Views: 1538

Answers (2)

KirtJ
KirtJ

Reputation: 594

Try this one...

if (isset($employee) && count($employee) > 0) {
    if (is_array($employee)) {
        foreach($employee as $emp) {
            //display Array employee
        }
    } else {
        //display for NON Array employee
    }
}

Upvotes: 0

Himanshu Upadhyay
Himanshu Upadhyay

Reputation: 6565

You need to make two changes in your code.

1st change: Your array declaration $employee = array(); or $employee[];

2nd change: Its always a good practice to check if the variable is an array and not empty using if condition before we write foreach loop. It will save us from the error which you are facing.

if(is_array($employee) && !empty($employee))
{
    foreach($employee as $emp)
    {
    }
}

Upvotes: 1

Related Questions