Ваш подход к вашей базе данных с помощью цикла foreach неверен.Правильный подход будет использовать соединение в запросе:
из вашей функции getDataOneColumn()
вы используете только значения snippet_id, которые вы можете использовать для создания объединения:
public function getDataOneColumn($table, $col1_name, $col1_value, $limit, $start)
{
$this->db->select("t1.*,t2.*")
->where("t1.$col1_name", $col1_value)
->join("snippets t2","t1.snippet_id=t2.id")
->limit($limit, $start);
$query = $this->db->get("$table t1");
$result = $query->result();
return $result;
}
примечание: в вашем примере $tag_id=$col1_value
, поэтому используйте любое имя переменной, которое подходит лучше.
Ваша вторая функция get_tags()
тогда вообще не нужна.