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)); }
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); }
$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() { array_walk(self::$log->queries, function ($q) { $sql = is_array($q['params']) ? strtr($q['sql'], $q['params']) : $q['sql']; echo $sql . PHP_EOL; });