phpmysqlcodeigniteractiverecordnotin

CodeIgniter active record query where a column is not found in an array


I need some help solving a problem with MySQL, is it possible to pass an array to a function and then run a match against the array values?

I have this query

public function getMenu($cookieId)
{
    $this->db->select('*');
    $this->db->from('categoryTable');
    $this->db->join('userMenuTable', 'categoryTable.categoryId = userMenuTable.categoryId', 'left');
    $this->db->where('userMenuTable.cookieId', $cookieId);
    
    $query = $this->db->get();
    return $query->result_array();
}

Using the $query array that is returned is possible to query the database and get all the values from a table that do not match the array values?


Solution

  • Use this condition in your query:

    $this->db->where_not_in('fieldname', $array_of_values);
    

    You won't be able to directly use the array returned in your example, as it comes from a SELECT * and thus it contains all fields of the table. You have to build an array with ONLY the values of the field you want to filter you next query on.