getTable(); // Skip for specific tables $skip_tables = ['companies', 'jobs', 'migrations', 'notifications', 'permissions', 'role_user', 'roles', 'sessions', 'users']; if (in_array($table, $skip_tables)) { return; } // Skip if already exists if ($this->exists($builder, 'company_id')) { return; } // Apply company scope $builder->where($table . '.company_id', '=', session('company_id')); } /** * Check if scope exists. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param $column * @return boolean */ protected function exists($builder, $column) { $query = $builder->getQuery(); foreach ((array) $query->wheres as $key => $where) { if (empty($where) || empty($where['column'])) { continue; } if (strstr($where['column'], '.')) { $whr = explode('.', $where['column']); $where['column'] = $whr[1]; } if ($where['column'] != $column) { continue; } return true; } return false; } }