Example #1
0
 public function prepareQuery(Query $query, $recordClass = null)
 {
     $this->recordClass = $recordClass;
     $sql = $query->buildSQL();
     $prepare = measure('Prepare query: ' . $sql, function () use($query, $sql) {
         $binds = $query->buildBinds();
         $prepare = $this->getConnection()->prepare($sql);
         if (!$prepare) {
             throw new Exception('Cannot prepare statement');
         }
         /**
          * Trigger query.prepared event.
          */
         trigger(Query::class . '.prepared', ['sql' => $sql, 'binds' => $binds]);
         $i = 1;
         foreach ($binds as $key => $val) {
             if (is_array($val)) {
                 foreach ($val as $rVal) {
                     $prepare->bindValue($i, $rVal);
                     $i++;
                 }
             } else {
                 $prepare->bindValue($i, $val);
                 $i++;
             }
         }
         $prepare->setFetchMode(\PDO::FETCH_ASSOC);
         return $prepare;
     });
     return $prepare;
 }