You have two issues with your configuration, one local to your extension, and one which blows up Magento's core
Mage_Reports module configuration.
There are three basic classes for working with / modeling an entity with Magento's ORM:
- (Data) Model - High-level CRUD interface of one "thing"; delegates to resource model
- Resource Model - Low-level performing CRUD of your thing; read & write access to storage
- (Resource) Collection - For building & interacting with result set & representing multiple "things"; read-only access to storage
Both the resource model and the collection classes are defined your module's model resource folder. I suspect that currently your configuration is specifying that both models and resource models are stored in the same folder:
<reports><!-- class group for models -->
<!-- ^ points to class group for resource models;
should be different from the model class group! -->
When we want a (data) model from this module (say, "report"):
It should be different from the resource model:
But this only works if the value of
global/models/reports/resourceModel xpath is different from the node name under
global/models in which it is defined (yours currently isn't). This is really tough to describe and understand, but take my word for it. Your resourceModel value should be something ending
_resource as a convention.
Your larger problem though is that normally,
Mage::getModel('reports/report') will return an instance of
Mage_Reports_Model_Report, because the
reports class group & prefix is defined in Mage/Reports/etc/config.xml:
Your module, however, is overwriting the value of the
global/models/reports xpath! This means that your module must implement every single class under Mage/Reports/Models/ - likely not what you are intending.