예제 #1
0
파일: core.php 프로젝트: brzhezinskiy/api
 /**
  * получает список пользователей с учетом $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());
 }