From a8733fefbcc3b5e3b69370205a0ea0fa5a532b6f Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 14 May 2016 13:10:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2=D1=83=D1=8E=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D1=8C=20-=20getAll=20=D0=BD?= =?UTF-8?q?=D0=B0=20PDO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/Model.php | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/classes/Model.php b/classes/Model.php index d908f86..8796920 100644 --- a/classes/Model.php +++ b/classes/Model.php @@ -142,28 +142,33 @@ abstract class Model * @param array $params ['where'] просто строка с условиями: (`id` > 1) AND (`name` == 'TEST'); ['order'] строка с именем толбца и напрабления: `summ` DESC * @return array с объектами */ - function getAll($params = array()) + function getAll($params = array(), $values = array()) { $sql = 'SELECT * FROM `' . $this->_tableName_ . '`'; - $sql .= isset($params['where']) && $params['where'] ? ' WHERE ' . $params['where'] : ''; - $sql .= isset($params['order']) && $params['order'] ? ' ORDER BY ' . $params['order'] : ''; - if (isset($params['limit']) && $params['limit']) { - if (isset($params['offset']) && $params['offset']) { - $sql .= ' LIMIT ' . $params['offset'] . ', ' . $params['limit']; + $sql .= isset($params['useIndex']) ? ' USE INDEX(' . $params['useIndex'] . ')' : ''; + $sql .= isset($params['where']) ? ' WHERE ' . $params['where'] : ''; + $sql .= isset($params['order']) ? ' ORDER BY ' . $params['order'] : ''; + if (isset($params['limit']) && intval($params['limit'])) { + if (isset($params['offset']) && intval($params['offset'])) { + $sql .= ' LIMIT ' . intval($params['offset']) . ', ' . intval($params['limit']); } else { - $sql .= ' LIMIT ' . $params['limit']; + $sql .= ' LIMIT ' . intval($params['limit']); } } - $res = App::DB()->query($sql); + + $res = App::DB()->prepare($sql); + $res->execute($values); $ready = array(); $calledClass = get_called_class(); while ($res && $row = $res->fetch(PDO::FETCH_ASSOC)) { - if (isset($params['noKeys'])) { - $ready[] = isset($params['asArray']) && $params['asArray'] ? $row : new $calledClass($row); + $element = isset($params['asArray']) && $params['asArray'] ? $row : new $calledClass($row); + + if (isset($params['noKeys']) && $params['noKeys']) { + $ready[] = $element; } else { - $ready[$row[$this->_primaryKey_]] = isset($params['asArray']) && $params['asArray'] ? $row : new $calledClass($row); + $ready[$row[$this->_primaryKey_]] = $element; } }