[eluser]totels[/eluser]
When using the dbforge to drop a table(dbdriver=mysql) it is not possible to correctly check the existence of a table after it is dropped.
Code:
class Simple_db_model extends Model
{
function __construct() {
parent::__construct();
$this->load->database();
}
function setup_db($drop=FALSE) {
$this->load->dbforge();
if ($drop === TRUE) {
$this->dbforge->drop_table('my_table');
}
// the db class has the table cached so testing
// for it's existence here will incorrectly confirm
// that the table does exist
if (!$this->db->table_exists('my_table')) {
// ... create table, etc.
}
}
}
As a workaround I manually clear the cache when using this technique.
Code:
if ($drop === TRUE) {
$this->dbforge->drop_table('my_table');
$this->db->data_cache = array();
}
I realize I could capture the return query from the drop_table() method in order to test it instead of using table_exists(), but logically it would seem that either way should work correctly.