ООП и получение кол-ва записей

Nicki

Новичок
ООП и получение кол-ва записей

В общем, посоветуйте плиз как сделать. В классе определен метод для получения из БД записей удовлетворяющих условиям, которые передаются в метод в виде массива. В самом методе происходит генерация SQL запроса, посылка его на выборку в БД, получение результата и парсинг его в массив, который и возвращается из метода.
PHP:
    // использую ADODB
    $result = $this->Dao->SelectLimit('SELECT fields FROM table WHERE ...', $items, $fromItem);
    if ($result) {
        while ($arr = $result->FetchRow()) {
            $entry['id']        = $arr[0];
            .....
            $entries[$arr[0]] = $entry;
        }
    }
    return isset($entries)? $entries:array();
В общем ничего необычного. Но, SQL строится с LIMIT, а мне еще каким то образом надо узнать сколько записей было бы возвращено, без LIMIT. Как мне это лучше реализовать? Я думаю, что в этом же методе будет не красиво, да и возвращать как то надо и массив и общее количество, а красиво это наверное не сделаешь. Посоветуйте пожалуйста.
 

Фанат

oncle terrible
Команда форума
ну сделай другой метод, который возвращает количество записей, с теми же аргументами
 

lifer

Новичок
Re: ООП и получение кол-ва записей

Автор оригинала: Nicki

В общем ничего необычного. Но, SQL строится с LIMIT, а мне еще каким то образом надо узнать сколько записей было бы возвращено, без LIMIT.
PHP:
$db->query('SELECT SQL_CALC_FOUND_ROWS fields FROM table WHERE ...');
$db->query('select FOUND_ROWS()');
$found_rows = $db->Record['FOUND_ROWS()'];
 

Nicki

Новичок
440hz lifer
К моему варианту исполнения это не подходит. Короче, получаю массив необходимый так:

PHP:
$conditions['someVar'] = $value;
...
$this->Templator->assign('players', $this->getPlayersList($conditions));
а код приведеный в топике, это часть содержимого getPlayersList(), который должен возвращать одномерный массив (иначе просто нарушается смысловая нагрузка метода... ну, в общем метод должен возвращать именно список игроков удовлетворяющих условиям в $conditions :)).

Фанат
Т.е. получается, что сам SQL запрос будет генерироваться в обоих методах. А это нормально будет?
 

440hz

php.ru
это нормально будет
я таких случаях методом возвращаю массив из двух элементов. первый кол-во записей, второе сами записи. а для SQL строю одинаковый WHERE и подсовываю его в оба запроса.
 

akd

dive now, work later
Команда форума
Nicki, ты читать умеешь? или только писать?

SQL_CALC_FOUND_ROWS
 

Фанат

oncle terrible
Команда форума
Т.е. получается, что сам SQL запрос будет генерироваться в обоих методах. А это нормально будет?
Запрос-то РАЗНЫЙ. он ВСЁ РАВНО будет два раза формироваться.

если тебя так убивает два раза формировать часть с условиями, то выполняй тут же, и присваивай количество записей публичной переменно.

проблема, по-моему, высосана из пальца. Особенно - возврата значений
 

Фанат

oncle terrible
Команда форума
Ну уж возврат-то через переменную класса-то можно было сделать?
 
Сверху