CakePHP & Subselects

I got an application that needs to be transcoded into CakePHP.

I have the following selection with subqueries:

        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

Does anyone know how to create this query using CakePHP find ($ type, $ params)?

+3
source share
3 answers

If this is your exact request, I would recommend doing it in four passes.

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

It may take a little longer to run, but your intentions are much clearer and the code will be much cleaner.

+5
source

Please try this code.

$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'
);
+1
source

The CakePHP cookbook contains some sample subqueries:

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

0
source

Source: https://habr.com/ru/post/1728970/


All Articles