コード例 #1
0
ファイル: Migrate.php プロジェクト: studio-v/nano
 /**
  * @return Nano_Db
  */
 public function getDb()
 {
     if (null === $this->db) {
         $this->setDb(Nano::db());
     }
     return $this->db;
 }
コード例 #2
0
ファイル: SqlSelectTest.php プロジェクト: studio-v/nano
 public function testLimit()
 {
     self::assertEquals('select * from t limit 1', sql::select(sql::ALL)->from('t')->limit(1)->toString(Nano::db()));
     self::assertEquals('select * from t limit 20, 10', sql::select(sql::ALL)->from('t')->limit(10, 20)->toString(Nano::db()));
     self::assertEquals('select * from t limit 0, 5', sql::select(sql::ALL)->from('t')->limitPage(1, 5)->toString(Nano::db()));
     self::assertEquals('select * from t limit 5, 5', sql::select(sql::ALL)->from('t')->limitPage(2, 5)->toString(Nano::db()));
     self::assertEquals('select * from t limit 10, 5', sql::select(sql::ALL)->from('t')->limitPage(3, 5)->toString(Nano::db()));
 }
コード例 #3
0
ファイル: Date.php プロジェクト: studio-v/nano
 /**
  * @return string
  * @param $type
  */
 public function toSql($type = null)
 {
     if (null === $type) {
         $type = Nano::db()->getType();
     }
     $format = 'Date::FORMAT_' . strToUpper($type);
     return $this->format(constant($format));
 }
コード例 #4
0
ファイル: Category.php プロジェクト: studio-v/nano
 protected static function loadCache()
 {
     $result = array();
     $rows = self::fetchThis(sql::select('*')->from(self::NAME)->order(Nano::db()->quoteName('order')));
     foreach ($rows as $row) {
         $result[$row->name] = $row;
     }
     return $result;
 }
コード例 #5
0
ファイル: NanoDbObjectTest.php プロジェクト: studio-v/nano
 public function testDelete()
 {
     Nano::db()->insert(TestDbTable1::NAME, array('field1' => 3, 'field2' => 3, 'field3' => 'value 3 1', 'field4' => 'value 3 1'));
     $object1 = new TestDbTable1(array('field1' => 3, 'field2' => 3));
     $this->assertFalse($object1->isNew());
     $this->assertEquals('value 3 1', $object1->field3);
     $this->assertEquals('value 3 1', $object1->field4);
     $object1->delete();
     $object2 = new TestDbTable1(array('field1' => 3, 'field2' => 3));
     $this->assertTrue($object2->isNew());
     $row = Nano::db()->getRow('select * from ' . TestDbTable1::NAME . ' where ' . Nano::db()->buildWhere(array('field1' => 3, 'field2' => 3)));
     $this->assertFalse($row);
 }
コード例 #6
0
ファイル: expr.php プロジェクト: studio-v/nano
 /**
  * @return string
  * @param Nano_Db $db
  */
 public function toString(Nano_Db $db = null)
 {
     if (null === $db) {
         $db = Nano::db();
     }
     $result = '';
     foreach ($this->parts as $part) {
         if ($part['type'] !== sql::SQL_NONE) {
             $result .= ' ' . $part['type'] . ' ';
         }
         $result .= '(';
         if (null !== $part['operation'] && null !== $part['right']) {
             $result .= $this->operand($db, $part['left'], true) . ' ' . $part['operation'] . ' ' . $this->operand($db, $part['right'], false);
         } elseif (null !== $part['operation']) {
             $result .= $this->operand($db, $part['left'], true) . ' ' . $part['operation'];
         } else {
             $result .= $this->operand($db, $part['left'], true);
         }
         $result .= ')';
     }
     return $result;
 }
コード例 #7
0
ファイル: SqlExprTest.php プロジェクト: studio-v/nano
 public function testNestedExpr()
 {
     $expected = "((a = 'b') and (c = 'd')) or ((e = 'f') and (g = 'h'))";
     $expr = sql::expr(sql::expr('a', '=', 'b')->addAnd('c', '=', 'd'))->addOr(sql::expr('e', '=', 'f')->addAnd('g', '=', 'h'));
     self::assertEquals($expected, $expr->toString(Nano::db()));
 }
コード例 #8
0
ファイル: queries.php プロジェクト: studio-v/nano
<?php

$sql = array();
$sql[] = 'insert into migration_test(id, comment) values (200, ' . Nano::db()->quote('second migration') . ')';
コード例 #9
0
ファイル: Db.php プロジェクト: studio-v/nano
 protected static function getTypeClass()
 {
     $result = 'Nano_Db_' . Nano::db()->getType();
     if (!class_exists($result, false)) {
         require LIB . '/Nano/Db/' . Nano::db()->getType() . '.php';
     }
     return $result;
 }
コード例 #10
0
ファイル: DateTest.php プロジェクト: studio-v/nano
 public function testToSqlAutodetect()
 {
     $string = '2009-11-04 01:02:03';
     $this->assertEquals(Date::create($string)->format(constant('DATE::FORMAT_' . strToUpper(Nano::db()->getType()))), Date::create($string)->toSql());
 }
コード例 #11
0
ファイル: SettingsTest.php プロジェクト: studio-v/nano
 protected function tearDown()
 {
     $this->invalidateCaches();
     Nano::db()->delete(Setting_Category::NAME);
 }
コード例 #12
0
ファイル: init-migrate.php プロジェクト: studio-v/nano
<?php

require dirName(__DIR__) . '/library/Nano.php';
Nano::instance();
$database = isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : null;
Nano_Migrate_Init::init(Nano::db($database));
コード例 #13
0
ファイル: queries.php プロジェクト: studio-v/nano
<?php

$sql = array();
$sql[] = 'create table migration_test(' . 'id integer primary key' . ', comment text' . ')';
$sql[] = 'insert into migration_test(id, comment) values (1000, ' . Nano::db()->quote('first migration') . ')';
コード例 #14
0
ファイル: select.php プロジェクト: studio-v/nano
 /**
  * @return string
  */
 public function toString(Nano_Db $db = null)
 {
     if (null === $db) {
         $db = Nano::db();
     }
     return $this->buildSelect() . $this->buildFrom() . $this->buildWhere($db) . $this->buildGroup() . $this->buildHaving($db) . $this->buildOrder() . $this->buildLimit();
 }