Вы можете попробовать следующее:
function handle()
{
$dept_codes = Employee::where('is_updated', 0)->where('company_id', 1)->pluck('dept_code')->toArray();
$departments = Department::whereIn('department_code', $dept_codes)->where('company_id', 1)->get();
foreach ($departments as $d) {
Employee::where('dept_code', $d->department_code)
->where('company_id', 1)
->update(['department_id' => $d->id, 'is_updated' => 1]);
}
}
Я немного оптимизировал запросы, чтобы не запрашивать базу данных на каждой итерации, а также уменьшил количество обновлений в таблице сотрудников.
Пусть я знаю, есть ли у вас вопросы.