CakePHP & Subselects - PullRequest
       8

CakePHP & Subselects

3 голосов
/ 18 января 2010

У меня есть приложение, которое нужно перекодировать в CakePHP.

Я получил следующий выбор с подвыборками:

        SELECT COUNT(*) AS item1,
            (SELECT COUNT(*) FROM portal_members) AS item3, 
            (SELECT COUNT(*) FROM portal_reviews) AS item3, 
            (SELECT COUNT(*) FROM portal_downloads) AS item4
        FROM portal_articles 
        WHERE 1 = 1

Кто-нибудь знает, как создать этот запрос, используя CakePHP find ($ type, $ params)?

Ответы [ 3 ]

5 голосов
/ 19 января 2010

Если это ваш точный запрос, я бы рекомендовал сделать это в четыре прохода.

$item1 = $this->PortalArticle->find('count');
$item2 = $this->PortalReview->find('count'); // etc..

Это может занять немного больше времени, но ваши намерения намного понятнее, а код будет намного чище.

1 голос
/ 29 марта 2016

Пожалуйста, попробуйте этот код

$this->loadModel('PortalArticle');
$db = $this->PortalArticle->getDataSource();
$a = $db->fetchAll(
    ' SELECT COUNT(*) AS item1,
    (SELECT COUNT(*) FROM portal_members) AS item3, 
    (SELECT COUNT(*) FROM portal_reviews) AS item3, 
    (SELECT COUNT(*) FROM portal_downloads) AS item4
FROM portal_articles 
WHERE 1 = 1'
);
0 голосов
/ 19 января 2010

Кулинарная книга CakePHP содержит несколько примеров подзапросов:

http://book.cakephp.org/view/74/Complex-Find-Conditions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...