Add custom operator for condition() in search_api
Maybe this trick will help you. You can go upstream and implement hook_query_alter instead

function yourmodule_query_alter(&amp;$query) {
if ($query-&gt;hasTag('search_api_db_search')) {
        $is_search = FALSE;
        $tables=$query-&gt;getTables();
        //dpm($tables);
        //only run for the query that really matters to you. Try to find something unique in this
          foreach ($tables as $table) {
            if ($table['table'] == 'search_api_db_your_important_table'  ) {
              $is_search = TRUE;
            }
          }

          if ($is_search) {
            //use query functions normally eg.
            $query-&gt;innerJoin('search_api_db_your_table', 'custom_table', "custom_table.item_id = t.item_id");
          }   
  }
}