public function testBuild() { $criteria = $this->criteriaFactory->build('Task', ['T4webInfrastructureTest\\Assets\\Active' => true, 'date_more' => '2015-10-30', 'id.isNotNull' => true, 'dateCreate.between' => ['2015-10-30', '2015-10-31'], 'relations' => ['User' => ['status.in' => [2, 3, 4], 'name.like' => 'gor']], 'limit' => 5]); $this->assertInstanceOf('T4webDomainInterface\\Infrastructure\\CriteriaInterface', $criteria); $this->assertEquals('Task', $criteria->getEntityName()); /** @var \Zend\Db\Sql\Select $select */ $select = $criteria->getQuery(); $dbAdapter = new \Zend\Db\Adapter\Adapter(['driver' => 'Pdo', 'dsn' => 'mysql:dbname=board;host=localhost', 'driver_options' => [\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''], 'username' => 'board', 'password' => '111']); $this->assertEquals("SELECT `tasks`.*" . " FROM `tasks`" . " INNER JOIN `users` ON `tasks`.`user_id` = `users`.`id`" . " WHERE `tasks`.`status` = '2'" . " AND `tasks`.`date_create` > '2015-10-30'" . " AND `tasks`.`id` IS NOT NULL" . " AND `tasks`.`date_create` BETWEEN '2015-10-30' AND '2015-10-31'" . " AND `users`.`status` IN ('2', '3', '4')" . " AND `users`.`name` LIKE 'gor'" . " LIMIT '5'", $select->getSqlString($dbAdapter->getPlatform())); }
/** * @param Zend\Db\Adapter\Adapter $adapter */ function refresh_data($adapter) { $platform = $adapter->getPlatform(); $platformName = $platform->getName(); $vendorData = (include __DIR__ . '/../setup/vendor/' . str_replace(' ', '-', strtolower($platformName)) . '.php'); try { foreach ($vendorData['data_down'] as $downSql) { $adapter->query($downSql, $adapter::QUERY_MODE_EXECUTE); } foreach ($vendorData['data_up'] as $tableName => $tableData) { if ($tableData == null) { continue; } if (is_int($tableName) && is_string($tableData)) { $adapter->query($tableData, $adapter::QUERY_MODE_EXECUTE); continue; } foreach ($tableData as $rowName => $rowData) { $keys = array_keys($rowData); $values = array_values($rowData); array_walk($keys, function (&$key) use($platform) { $key = $platform->quoteIdentifier($key); }); array_walk($values, function (&$value) use($platform) { switch (gettype($value)) { case 'NULL': $value = 'NULL'; break; case 'string': $value = $platform->quoteValue($value); break; } }); $insertSql = 'INSERT INTO ' . $platform->quoteIdentifier($tableName) . ' (' . implode(', ', $keys) . ') ' . ' VALUES (' . implode(', ', $values) . ')'; $adapter->query($insertSql, $adapter::QUERY_MODE_EXECUTE); } } } catch (\Exception $e) { echo $e->getMessage(); var_dump($e); exit(1); } }