Look at this, i turn off all hasMany, hasOne relationships and i make simple query logger here is all queries which runs:
[before: 20:03:16] SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = 'visitor' AND `TABLE_SCHEMA` = DATABASE()
[after: 20:03:16] SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = 'visitor' AND `TABLE_SCHEMA` = DATABASE()
[before: 20:03:16] DESCRIBE `visitor`
[after: 20:03:16] DESCRIBE `visitor`
[before: 20:03:16] SELECT COUNT(42) AS `rowcount` FROM `visitor` WHERE `visitor`.`visitor_id` = :vid AND `visitor`.`created_at` > :lastDay 55cc9cc5086c0,2015-08-12 23:59:59
[after: 20:03:16] SELECT COUNT(42) AS `rowcount` FROM `visitor` WHERE `visitor`.`visitor_id` = :vid AND `visitor`.`created_at` > :lastDay 55cc9cc5086c0,2015-08-12 23:59:59
[before: 20:03:16] SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = 'cars' AND `TABLE_SCHEMA` = DATABASE()
[after: 20:03:16] SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = 'cars' AND `TABLE_SCHEMA` = DATABASE()
[before: 20:03:16] DESCRIBE `cars`
[after: 20:03:17] DESCRIBE `cars`
[before: 20:03:17] SELECT `cars`.`id`, `cars`.`user_id`, `cars`.`manufacturer_id`, `cars`.`model_id`, `cars`.`title`, `cars`.`description`, `cars`.`transmission`, `cars`.`price`, `cars`.`color`, `cars`.`bulk`, `cars`.`fuel`, `cars`.`doors`, `cars`.`places`, `cars`.`state`, `cars`.`performance`, `cars`.`body`, `cars`.`vintage`, `cars`.`milage`, `cars`.`owners`, `cars`.`vin`, `cars`.`mark`, `cars`.`stk`, `cars`.`service_list`, `cars`.`type`, `cars`.`drive`, `cars`.`main_image`, `cars`.`top`, `cars`.`highlight`, `cars`.`expiration`, `cars`.`visits`, `cars`.`url`, `cars`.`created_at`, `cars`.`updated_at`, `cars`.`is_leasing`, `cars`.`is_prooved`, `cars`.`is_dph`, `cars`.`is_active`, `cars`.`fn_data`, `cars`.`security`, `cars`.`exterior`, `cars`.`interior` FROM `cars` WHERE 'A' = 'A' AND `cars`.`is_active` = :is_active0 AND `cars`.`expiration` > :expiration1 GROUP BY `cars`.`id` ORDER BY `cars`.`top` DESC, `cars`.`id` DESC LIMIT :AP0 OFFSET :AP1 1,2015-08-13 20:03:16,12,12
[after: 20:03:18] SELECT `cars`.`id`, `cars`.`user_id`, `cars`.`manufacturer_id`, `cars`.`model_id`, `cars`.`title`, `cars`.`description`, `cars`.`transmission`, `cars`.`price`, `cars`.`color`, `cars`.`bulk`, `cars`.`fuel`, `cars`.`doors`, `cars`.`places`, `cars`.`state`, `cars`.`performance`, `cars`.`body`, `cars`.`vintage`, `cars`.`milage`, `cars`.`owners`, `cars`.`vin`, `cars`.`mark`, `cars`.`stk`, `cars`.`service_list`, `cars`.`type`, `cars`.`drive`, `cars`.`main_image`, `cars`.`top`, `cars`.`highlight`, `cars`.`expiration`, `cars`.`visits`, `cars`.`url`, `cars`.`created_at`, `cars`.`updated_at`, `cars`.`is_leasing`, `cars`.`is_prooved`, `cars`.`is_dph`, `cars`.`is_active`, `cars`.`fn_data`, `cars`.`security`, `cars`.`exterior`, `cars`.`interior` FROM `cars` WHERE 'A' = 'A' AND `cars`.`is_active` = :is_active0 AND `cars`.`expiration` > :expiration1 GROUP BY `cars`.`id` ORDER BY `cars`.`top` DESC, `cars`.`id` DESC LIMIT :AP0 OFFSET :AP1 1,2015-08-13 20:03:16,12,12
[before: 20:03:18] SELECT COUNT(*) AS `rowcount` FROM `cars` WHERE 'A' = 'A' AND `cars`.`is_active` = :is_active0 AND `cars`.`expiration` > :expiration1 GROUP BY `cars`.`id` 1,2015-08-13 20:03:16
[after: 20:03:19] SELECT COUNT(*) AS `rowcount` FROM `cars` WHERE 'A' = 'A' AND `cars`.`is_active` = :is_active0 AND `cars`.`expiration` > :expiration1 GROUP BY `cars`.`id` 1,2015-08-13 20:03:16
The queries is before run and after run ( to catch time )
And about relation ship its lazy it cannot be called at the same time as query, to load.