Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ Library on [Packagist](https://packagist.org/packages/usmanhalalit/pixie).
- [Connection](#connection)
- [Alias](#alias)
- [Multiple Connection](#alias)
- [SQLite and PostgreSQL Config Sample](sqlite-and-postgresql-config-sample)
- [SQLite and PostgreSQL Config Sample](#sqlite-and-postgresql-config-sample)
- [Query](#query)
- [**Select**](#select)
- [Get Easily](#get-easily)
Expand Down
53 changes: 33 additions & 20 deletions src/Pixie/QueryBuilder/QueryBuilderHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class QueryBuilderHandler
protected $statements = array();

/**
* @var \PDO
* @var PDO
*/
protected $pdo;

Expand All @@ -47,14 +47,15 @@ class QueryBuilderHandler
*
* @var array
*/
protected $fetchParameters = array(\PDO::FETCH_OBJ);
protected $fetchParameters = array(PDO::FETCH_OBJ);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@usmanhalalit need your view in there. This can potentially break some setups.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it will not, as use PDO; on this file make \PDO and PDO the same thing

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@TCB13 and this is the same thing, as you are using use PDO the trailing \ is not required


/**
* @param null|\Pixie\Connection $connection
*
* @throws \Pixie\Exception
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you mean this @TCB13 ?
this is because you are using use Pixie\Exception, this will be automatically inferred to be a Pixie one

* @param int $fetchMode
* @throws Exception
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why replace \Pixie\Exception by Exception?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use is already specifying that the Exception in here is \Pixie\

*/
public function __construct(Connection $connection = null)
public function __construct(Connection $connection = null, $fetchMode = PDO::FETCH_OBJ)
{
if (is_null($connection)) {
if (!$connection = Connection::getStoredConnection()) {
Expand All @@ -68,6 +69,8 @@ public function __construct(Connection $connection = null)
$this->adapter = $this->connection->getAdapter();
$this->adapterConfig = $this->connection->getAdapterConfig();

$this->setFetchMode($fetchMode);

if (isset($this->adapterConfig['prefix'])) {
$this->tablePrefix = $this->adapterConfig['prefix'];
}
Expand Down Expand Up @@ -102,21 +105,21 @@ public function setFetchMode($mode)
*/
public function asObject($className, $constructorArgs = array())
{
return $this->setFetchMode(\PDO::FETCH_CLASS, $className, $constructorArgs);
return $this->setFetchMode(PDO::FETCH_CLASS, $className, $constructorArgs);
}

/**
* @param null|\Pixie\Connection $connection
*
* @return static
* @return QueryBuilderHandler
* @throws Exception
*/
public function newQuery(Connection $connection = null)
{
if (is_null($connection)) {
$connection = $this->connection;
}

return new static($connection);
return new static($connection, $this->getFetchMode());
}

/**
Expand Down Expand Up @@ -156,7 +159,8 @@ public function statement($sql, $bindings = array())
/**
* Get all rows
*
* @return \stdClass|null
* @return \stdClass|array
* @throws Exception
*/
public function get()
{
Expand Down Expand Up @@ -259,17 +263,17 @@ protected function aggregate($type)
}

if (is_array($row[0])) {
return (int) $row[0]['field'];
return (int)$row[0]['field'];
} elseif (is_object($row[0])) {
return (int) $row[0]->field;
return (int)$row[0]->field;
}

return 0;
}

/**
* @param string $type
* @param array $dataToBePassed
* @param array $dataToBePassed
*
* @return mixed
* @throws Exception
Expand All @@ -291,7 +295,7 @@ public function getQuery($type = 'select', $dataToBePassed = array())

/**
* @param QueryBuilderHandler $queryBuilder
* @param null $alias
* @param null $alias
*
* @return Raw
*/
Expand Down Expand Up @@ -440,10 +444,10 @@ public function delete()
}

/**
* @param $tables Single table or multiple tables as an array or as
* multiple parameters
* @param string|array $tables Single table or array of tables
*
* @return static
* @return QueryBuilderHandler
* @throws Exception
*/
public function table($tables)
{
Expand All @@ -453,7 +457,7 @@ public function table($tables)
$tables = func_get_args();
}

$instance = new static($this->connection);
$instance = new static($this->connection, $this->getFetchMode());
$tables = $this->addTablePrefix($tables, false);
$instance->addStatement('tables', $tables);
return $instance;
Expand Down Expand Up @@ -791,7 +795,7 @@ public function join($table, $key, $operator = null, $value = null, $type = 'inn
// Build a new JoinBuilder class, keep it by reference so any changes made
// in the closure should reflect here
$joinBuilder = $this->container->build('\\Pixie\\QueryBuilder\\JoinBuilder', array($this->connection));
$joinBuilder = & $joinBuilder;
$joinBuilder = &$joinBuilder;
// Call the closure with our new joinBuilder object
$key($joinBuilder);
$table = $this->addTablePrefix($table, false);
Expand Down Expand Up @@ -1012,7 +1016,7 @@ public function getEvent($event, $table = ':any')

/**
* @param $event
* @param string $table
* @param string $table
* @param callable $action
*
* @return void
Expand All @@ -1030,7 +1034,7 @@ public function registerEvent($event, $table, \Closure $action)

/**
* @param $event
* @param string $table
* @param string $table
*
* @return void
*/
Expand Down Expand Up @@ -1061,4 +1065,13 @@ public function getStatements()
{
return $this->statements;
}

/**
* @return int will return PDO Fetch mode
*/
public function getFetchMode()
{
return !empty($this->fetchParameters) ?
current($this->fetchParameters) : PDO::FETCH_OBJ;
}
}
17 changes: 16 additions & 1 deletion tests/Pixie/QueryBuilderBehaviorTest.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php namespace Pixie;

use Mockery as m;
use Pixie\QueryBuilder\QueryBuilderHandler;

class QueryBuilderTest extends TestCase
{
Expand Down Expand Up @@ -302,4 +302,19 @@ public function testIsPossibleToUseSubqueryInWhereNotClause()
$query->getQuery()->getRawSql()
);
}

public function testYouCanSetFetchModeFromConstructorAsOptionalParameter()
{
$selectedFetchMode = \PDO::FETCH_ASSOC;
$builder = new QueryBuilderHandler($this->mockConnection, $selectedFetchMode);
$this->assertEquals($selectedFetchMode, $builder->getFetchMode());
}

public function testFetchModeSelectedWillBeMaintainedBetweenInstances(){
$selectedFetchMode = \PDO::FETCH_ASSOC;
$builder = new QueryBuilderHandler($this->mockConnection, $selectedFetchMode);
$newBuilder = $builder->table('stuff');

$this->assertEquals($selectedFetchMode, $newBuilder->getFetchMode());
}
}