Пример #1
0
 /**
  * @param string $table
  * @param array $data
  *
  * @return bool|int
  */
 protected final function insert($table, array $data)
 {
     if (empty($data)) {
         return false;
     }
     $keys = array_keys($data);
     $sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $keys) . ') VALUES (:' . implode(', :', $keys) . ');';
     $query = $this->pdo->prepare($sql);
     foreach ($data as $key => $value) {
         $query->bindValue(':' . $key, $data[$key]);
     }
     $query->execute();
     $insert = $query->rowCount();
     if ($insert) {
         return (int) $this->pdo->lastInsertId();
     }
     return false;
 }
Пример #2
0
 /**
  * execute query
  *
  * @param \Aura\SqlQuery\AbstractQuery|\Aura\SqlQuery\Common\SelectInterface|\Aura\SqlQuery\Common\ValuesInterface $queryObject
  * @return array
  * @throws \Exception
  */
 public function query($queryObject)
 {
     $query = $queryObject->__toString();
     $sth = self::$_connection->prepare($query);
     if (!$sth) {
         $err = self::$_connection->errorInfo();
         throw new \Exception('DB Error: ' . $err[0] . ' - ' . $err[2]);
     }
     $values = $queryObject->getBindValues();
     foreach ($values as $key => $val) {
         $sth->bindParam(':' . $key, $val);
         unset($val);
     }
     $res = $sth->execute();
     if (!$res) {
         $err = $sth->errorInfo();
         throw new \Exception('DB Error: ' . $err[0] . ' - ' . $err[2]);
     }
     return $sth;
 }
 public function modifyWebDispatcher($di)
 {
     $dispatcher = $di->get('aura/web-kernel:dispatcher');
     $dispatcher->setObject('hello', function () use($di) {
         $response = $di->get('aura/web-kernel:response');
         $response->content->set('Hello World!');
     });
     $dispatcher->setObject('about', function () use($di) {
         $view_factory = new \Aura\View\ViewFactory();
         $view = $view_factory->newInstance();
         $layout_registry = $view->getLayoutRegistry();
         $layout_registry->set('default', './../src/templates/default.layout.php');
         $view_registry = $view->getViewRegistry();
         $view_registry->set('about', './../src/templates/about.php');
         $view->setView('about');
         $view->setLayout('default');
         $response = $di->get('aura/web-kernel:response');
         $response->content->set($view());
     });
     $dispatcher->setObject('data-view-sales', function () use($di) {
         $view_factory = new \Aura\View\ViewFactory();
         $view = $view_factory->newInstance();
         $pdo = new ExtendedPdo('sqlite:./../db/database.sqlite');
         $extended_pdo = new ExtendedPdo($pdo);
         $stm = '
             SELECT t.TrackId, sum(il.unitprice) as "TotalSales", t.Name as "TrackName", g.Name as Genre, a.Title as "AlbumTitle", at.Name as "ArtistName"
             from InvoiceLine il
             inner join track t on (t.TrackId = il.TrackId)
             INNER JOIN genre g on (g.GenreId = t.GenreId)
             inner join album a on (a.AlbumId = t.AlbumId)
             INNER JOIN artist at on (at.ArtistId = a.ArtistId)
             WHERE g.Name like :genre
             group by t.TrackId
             HAVING at.Name = :artist_name
             order by sum(il.UnitPrice) desc, t.Name asc
         ';
         $bind = array('genre' => 'TV%', 'artist_name' => 'Lost');
         $sth = $pdo->prepare($stm);
         $sth->execute($bind);
         $layout_registry = $view->getLayoutRegistry();
         $layout_registry->set('default', './../src/templates/sales.layout.php');
         $view_registry = $view->getViewRegistry();
         $view_registry->set('sales-data', './../src/templates/data/sales/view.php');
         $view->setView('sales-data');
         $view->setLayout('default');
         // the "sub" template
         $view_registry->set('_result', './../src/templates/data/sales/result.php');
         $view->setData(['results' => $pdo->fetchObjects($stm, $bind, '\\DatabaseObjects\\Entity\\SalesData')]);
         $response = $di->get('aura/web-kernel:response');
         $response->content->set($view());
     });
 }