/** * Merge this QueryBuilder's JOINs into the given QueryBuilder. * * @param QueryBuilder $QueryBuilder to merge into * @return QueryBuilder */ public function mergeJoinInto(QueryBuilder $QueryBuilder) { foreach ($this->join as $currentJoin) { $QueryBuilder->join($currentJoin['table'], $currentJoin['criteria'], $currentJoin['type'], $currentJoin['alias']); } return $QueryBuilder; }
/** * Generated from @assert join('user U', 'INNER', array(array('U.id', 'A.id'), array('U.id', 'A.id')))->text() [==] " INNER JOIN `user` AS U ON U.`id` = A.`id` AND U.`id` = A.`id`". * * @covers Kotchasan\Database\QueryBuilder::join */ public function testJoin5() { $this->assertEquals(" INNER JOIN `user` AS U ON U.`id` = A.`id` AND U.`id` = A.`id`", $this->object->join('user U', 'INNER', array(array('U.id', 'A.id'), array('U.id', 'A.id')))->text()); }
require_once 'libs/Bootstrap.php'; require_once 'libs/QueryBuilder.php'; // Authentication token $token = $peregrine->session->getUsername('username') . $peregrine->server->getRaw('REMOTE_ADDR'); if (!$auth->checkToken($token, $peregrine->session->getRaw('token'))) { exit; } if (!defined('MYSQL_PREFIX')) { define('MYSQL_PREFIX', 'prism_'); // Old config files may not have the constant defined yet. } // Build query $qb = new QueryBuilder(); $qb->select('id, epoch, action, player, world, x, y, z, block_id, block_subid, old_block_id, old_block_subid, data'); $qb->from(MYSQL_PREFIX . 'data', 'd'); $qb->join('INNER JOIN ' . MYSQL_PREFIX . 'players p ON p.player_id = d.player_id'); $qb->join('INNER JOIN ' . MYSQL_PREFIX . 'actions a ON a.action_id = d.action_id'); $qb->join('INNER JOIN ' . MYSQL_PREFIX . 'worlds w ON w.world_id = d.world_id'); $qb->join('LEFT JOIN ' . MYSQL_PREFIX . 'data_extra ex ON ex.data_id = d.id'); // World if (!$peregrine->post->isEmpty('world')) { $world = explode(",", $peregrine->post->getUsername('world')); $qb->where(QueryBuilder::buildOrQuery('w.world', $world)); } // Coordinates if (!$peregrine->post->isEmpty('x', false, false) && !$peregrine->post->isInt('y', false, false) && !$peregrine->post->isInt('z', false, false)) { $x = $peregrine->post->getInt('x'); $y = $peregrine->post->getInt('y'); $z = $peregrine->post->getInt('z'); if (!$peregrine->post->isInt('radius', false, false)) { $radius = $peregrine->post->getInt('radius');