Пример #1
0
 /**
  * Will set limit defined inside $m onto query $q.
  *
  * @param Model            $m
  * @param \atk4\dsql\Query $q
  */
 protected function setLimitOrder($m, $q)
 {
     if ($m->limit && ($m->limit[0] || $m->limit[1])) {
         if ($m->limit[0] === null) {
             // This is max number which is allowed in MySQL server.
             // But be aware, that PDO will downgrade this number even lower probably because
             // in LIMIT it expects numeric value and converts string (we set float values as PDO_PARAM_STR)
             // back to PDO_PARAM_INT which is goes back to max int value specific server can have.
             // On my Win10,64-bit it is 2147483647, on Travis server 9223372036854775807 etc.
             $m->limit[0] = '18446744073709551615';
         }
         $q->limit($m->limit[0], $m->limit[1]);
     }
     if ($m->order) {
         foreach ($m->order as $o) {
             $q->order($m->getElement($o[0]), $o[1]);
         }
     }
 }