преобразование простого запроса в запрос поиска cakephp для разбиения на страницы в контроллере

у меня следующие ассоциации

  1. пользователей много доменов

  2. доменов много посетителей

  3. домены имеют много просмотров страниц

И следующий запрос

    SELECT
    pv.name,pv.domain_id,pv.counter as page_visits, v.ip, v.counter as visits
FROM (
    SELECT  `domains`.`name` ,  `pageviews`.`domain_id` , COUNT(  `pageviews`.`domain_id` ) as counter
    FROM  `pageviews` 
    LEFT JOIN  `domains` ON (  `domains`.`id` =  `pageviews`.`domain_id` 
    AND  `domains`.`user_id` =  '129' ) 
    WHERE  `pageviews`.`user_id` =  '129'
    GROUP BY  `pageviews`.`domain_id` 
    ORDER BY COUNT(  `pageviews`.`domain_id` ) DESC 
) as pv
LEFT JOIN (
    SELECT  `domains`.`name` ,  `visitors`.`ip` ,  `visitors`.`domain_id` , COUNT(  `visitors`.`domain_id` ) as counter
    FROM  `visitors` 
    LEFT JOIN  `domains` ON (  `domains`.`id` =  `visitors`.`domain_id` 
    AND  `domains`.`user_id` =  '129' ) 
    WHERE  `visitors`.`user_id` =  '129'
    GROUP BY  `visitors`.`domain_id` 
    ORDER BY COUNT(  `visitors`.`domain_id` ) DESC
) as v
    ON pv.domain_id = v.domain_id

Я хочу преобразовать запрос на поиск в cakephp для разбиения на страницы, так как cakephp не позволяет $this->paginate("mysql query here");


person Garry    schedule 01.08.2013    source источник
comment
как выглядят ваши сложные запросы :)? Вы пробовали что-нибудь?   -  person AD7six    schedule 01.08.2013
comment
Я могу присоединиться (домены с посетителями) и (домены с просмотрами страниц), используя ассоциации cakephp, но как присоединиться к этим двум, я понятия не имею об этом.   -  person Garry    schedule 01.08.2013


Ответы (2)


Я бы порекомендовал попробовать это средство.

http://dogmatic69.com/sql-to-cakephp-find-converter

Это создаст пользовательский метод поиска для этого запроса, что позволит вам реализовать его в вашей модели.

person David Yell    schedule 01.08.2013

Вы можете просто выполнить свой запрос как

$this->ModelName->query('your_sql_query');

Это сделает вашу работу для сложных запросов, как указано выше.

person Anand G    schedule 06.08.2013