Ejemplo n.º 1
0
 public function testFilterTime()
 {
     $ddt = new DateTime();
     $obj = new CustomerOrderModel(['order_number' => 'filter_test1', 'date_added' => $ddt->format(\Dja\Db\Model\Field\DateTime::FORMAT)]);
     $obj->save();
     $q = CustomerOrderModel::objects()->filter(['date_added__minute' => $ddt->format('i'), 'order_number' => 'filter_test1'])->limit(1);
     $this->assertCount(1, $q);
     foreach ($q as $obj) {
         $dt = new DateTime($obj->date_added);
         $this->assertEquals($ddt, $dt);
     }
 }
Ejemplo n.º 2
0
 public function testReplacements()
 {
     $q = CustomerOrderModel::objects()->raw('SELECT :pk, :user FROM :t WHERE :user < 100 LIMIT 5');
     $this->assertEquals('SELECT "customer_order_id", "user_id" FROM "' . CustomerOrderModel::metadata()->getDbTableName() . '" WHERE "user_id" < 100 LIMIT 5', strval($q));
     $q = CustomerOrderModel::objects()->raw('SELECT * FROM :t');
     $this->assertEquals('SELECT "customer_order_id", "date_added", "user_id", "order_number" FROM "' . CustomerOrderModel::metadata()->getDbTableName() . '"', strval($q));
 }
Ejemplo n.º 3
0
 public function testRanges()
 {
     $q = CustomerOrderModel::objects();
     $paginator = new \Dja\Db\Model\Query\Pagination($q, 3, 10);
     $this->assertCount(5, $paginator->getPagesArray());
     foreach ($paginator->getPagesIterator() as $p) {
         $this->assertTrue($p >= $paginator->getFirstPage() && $p <= $paginator->getLastPage());
     }
 }
Ejemplo n.º 4
0
 public function testBase()
 {
     $q = CustomerOrderModel::objects()->valuesList('order_number', 'order_number')->limit(5);
     foreach ($q as $key => $obj) {
         $this->assertInternalType('string', $obj);
         $this->assertEquals($key, $obj);
     }
     $this->assertCount(5, $q);
 }
Ejemplo n.º 5
0
 public function testBase()
 {
     $mtd = CustomerOrderModel::metadata();
     $mtd->addField('vrt', new \Dja\Db\Model\Field\Virtual(['getter' => function (\CustomerOrderModel $model) {
         return '#' . $model->pk . ' ' . $model->order_number;
     }]));
     $qs = CustomerOrderModel::objects()->all();
     /** @var CustomerOrderModel $model */
     $model = $qs->current();
     $this->assertEquals('#' . $model->pk . ' ' . $model->order_number, $model->vrt);
 }
Ejemplo n.º 6
0
 public function testToArray()
 {
     /** @var CustomerOrderModel $co */
     $co = CustomerOrderModel::objects()->exclude(['user' => null, 'user_id' => 0])->limit(1)->current();
     $arr = $co->toArray(2);
     $this->assertArrayHasKey('user', $arr);
     $this->assertSame($co->user_id, $arr['user']);
     $co = CustomerOrderModel::objects()->exclude(['user' => null, 'user_id' => 0])->limit(1)->selectRelated(['user'])->current();
     $arr = $co->toArray(2);
     $this->assertArrayHasKey('user', $arr);
     $this->assertInternalType('array', $arr['user']);
 }
Ejemplo n.º 7
0
 public function testSelectRelatedDecrementDepth()
 {
     $this->setExpectedException('\\InvalidArgumentException');
     $q = CustomerOrderModel::objects()->selectRelated(['depth' => 3])->selectRelated(['depth' => 1]);
 }
Ejemplo n.º 8
0
{
    protected static $dbtable = 'test_customer_order';
    protected static $fields = ['customer_order_id' => ['Auto', 'help_text' => 'первичный ключ'], 'date_added' => ['DateTime', 'autoInsert' => true, 'help_text' => 'время создания'], 'user' => ['ForeignKey', 'relationClass' => 'UserModel', 'db_column' => 'user_id', 'null' => true, 'help_text' => 'ссылка на юзера'], 'order_number' => ['Char', 'null' => true, 'max_length' => 21, 'default' => '', 'blank' => true, 'help_text' => 'полный номер заказа']];
}
$creation = new \Dja\Db\Creation($dbConn, ['UserModel', 'CustomerOrderModel']);
$creation->processQueueCallback(function (\Dja\Db\Model\Metadata $metadata, \Doctrine\DBAL\Schema\Table $table, array $sql, \Doctrine\DBAL\Connection $db) {
    foreach ($sql as $sqlstmt) {
        $db->exec($sqlstmt);
    }
});
for ($i = 1; $i <= 99; $i++) {
    $user = new UserModel(['username' => 'testUser' . $i, 'fullname' => 'testUser ' . $i . ' with space', 'email' => 'test' . $i . '@ya.ru', 'password' => md5('passw' . $i), 'ip' => $i < 90 ? '127.0.0.1' : null]);
    $user->save();
}
for ($i = 1; $i <= 99; $i++) {
    $order = new CustomerOrderModel(['order_number' => 'testOrder' . $i, 'user_id' => $i]);
    $order->save();
}
register_shutdown_function(function () use($dbConn) {
    $dbConn->getSchemaManager()->dropTable(CustomerOrderModel::metadata()->getDbTableName());
    $dbConn->getSchemaManager()->dropTable(UserModel::metadata()->getDbTableName());
    $dbConn->close();
});
class SqlLog
{
    /**
     * @var \Doctrine\DBAL\Logging\DebugStack
     */
    public static $log;
    public static function dump()
    {