Mage_Log is the module whih stores log details in Magento. It mainly logs following details
Customers who logged in
Past Vistors
Vistors who currently active
Quotes etc.
If you dig more deeply, you can see that, you can get log-visitor collection. However log-customer collection is not available. It is logical since, most of the time, you will only query about logs of a specific customer, not of multiple customers at a time. I think this is why core team of magento didn't include collection for log-customers.
To Get Collection Of Customers
Now take a look on the Mage_Log module's model section. You can see the entity visitor only holds the collection. But through this collection we can access log-customer collection!. What ? I can get log-collection through visitors ? Yes. Because let us have a look on log_customer table.
+--------+------------+-------------+---------------------+---------------------+----------+
| log_id | `visitor_id` | customer_id | login_at | logout_at | store_id |
+--------+------------+-------------+---------------------+---------------------+----------+
| 1 | 105 | 2 | 2014-02-05 18:49:10 | 2014-02-05 13:19:10 | 4 |
| 2 | 105 | 2 | 2014-02-05 13:19:30 | NULL | 4 |
| 3 | 113 | 3 | 2014-08-05 10:26:08 | NULL | 1 |
| 4 | 325 | 3 | 2014-09-04 01:32:18 | NULL | 1 |
+--------+------------+-------------+---------------------+---------------------+----------+
Did you see visitor_id that is used in the table. This means, every time a user visit, magento will generate a vistor_id for that user and store in the table log_visitor. When a registered user then login to his account using his credentials, log_customer table will get updated. So each time a customer visit, a unique visitor_id reference will be associated with that user. So due to this, using visitor collection , we can access log-customer collection.
For an exmaple a simple query is shown below.
$collection = Mage::getModel('log/visitor')->getCollection()->addFieldToFilter('store_id', array('eq' => 1));
$collection->getSelect()
->join(
array('log_customer'=> $collection->getTable('log/customer')),
'main_table.`visitor_id`= log_customer.`visitor_id`'
);
foreach ($collection->getItems() as $item) {
print_r($item->getData());
}
This collection filter will return every log-customer who are available for store id = 1. Is that what you need ? :)
Wrap up
So in short, you don't need any collection defined for log-customer entity. It is intended to access details of one customer at a time. If you need collection, you can use visitor collection for that. That is the correct way to do that :)
Hope that make sense
Item (Mage_Log_Model_Visitor) with the same id "xxx" already existany suggestions – pzirkind Sep 05 '14 at 13:15log_customer. The code works only when all visitor_id inlog_customertable is unique – Rajeev K Tomy Sep 05 '14 at 13:18log-visitorto get collection of a customer. It is your job to do a good coding based on this point. :). I just want to answer your question and my answer fulfills what the question demands – Rajeev K Tomy Sep 05 '14 at 13:25