Reputation: 88
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
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
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