/** * получает список пользователей с учетом $filter, с условием LIKE % если в поле указана *. * если указано orCond = true, ищет по условию OR */ public function selectUsers(array $filter = array(), $orCond = true) { $sql = new RequestBuilder($this->dbInctance); $sql->select('*')->from('^table', array('^table' => $this->dbStruct['table'])); foreach ($filter as $name => $val) { // проверяем, как будет составляться условие - AND или OR $orCond ? $sql->or_() : $sql->and_(); if (strpos($val, '*') !== false) { // найдены условия, нужен LIKE $val = str_replace('*', '%', $val); $sql->where('^name', array('^name' => $name))->like(':val', array(':val' => $val)); } else { // * нет, нужно сравнение $sql->where('^name = :val', array('^name' => $name, ':val' => $val)); } } $sth = $sql->query(); $sth->setFetchMode(PDO::FETCH_ASSOC); return new SelectUsers($sth->fetchAll()); }