Commit f2964d41 authored by Jens Segers's avatar Jens Segers

Tweaks

parent 9d878930
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
"license" : "MIT", "license" : "MIT",
"require": { "require": {
"php": ">=5.3.0", "php": ">=5.3.0",
"illuminate/support": "4.0.x", "illuminate/support": "4.1.x",
"illuminate/database": "4.0.x", "illuminate/database": "4.1.x",
"illuminate/events": "4.0.x" "illuminate/events": "4.1.x"
}, },
"autoload": { "autoload": {
"psr-0": { "psr-0": {
......
...@@ -33,15 +33,9 @@ class Builder extends \Illuminate\Database\Query\Builder { ...@@ -33,15 +33,9 @@ class Builder extends \Illuminate\Database\Query\Builder {
* @param Connection $connection * @param Connection $connection
* @return void * @return void
*/ */
public function __construct(Connection $connection, $collection = null) public function __construct(Connection $connection)
{ {
$this->connection = $connection; $this->connection = $connection;
// Set optional collection
if (!is_null($collection))
{
$this->from($collection);
}
} }
/** /**
......
<?php namespace Jenssegers\Mongodb; <?php namespace Jenssegers\Mongodb;
use Jenssegers\Mongodb\Builder as QueryBuilder;
use MongoClient; use MongoClient;
class Connection extends \Illuminate\Database\Connection { class Connection extends \Illuminate\Database\Connection {
...@@ -39,6 +40,30 @@ class Connection extends \Illuminate\Database\Connection { ...@@ -39,6 +40,30 @@ class Connection extends \Illuminate\Database\Connection {
$this->db = $this->connection->{$config['database']}; $this->db = $this->connection->{$config['database']};
} }
/**
* Return a new QueryBuilder for a collection
*
* @param string $collection
* @return QueryBuilder
*/
public function collection($collection)
{
$query = new QueryBuilder($this);
return $query->from($collection);
}
/**
* Begin a fluent query against a database table.
*
* @param string $table
* @return QueryBuilder
*/
public function table($table)
{
return $this->collection($table);
}
/** /**
* Get a MongoDB collection. * Get a MongoDB collection.
* *
...@@ -92,4 +117,16 @@ class Connection extends \Illuminate\Database\Connection { ...@@ -92,4 +117,16 @@ class Connection extends \Illuminate\Database\Connection {
return $dsn; return $dsn;
} }
/**
* Dynamically pass methods to the connection.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
return call_user_func_array(array($this->connection, $method), $parameters);
}
} }
\ No newline at end of file
...@@ -49,7 +49,7 @@ class DatabaseManager implements ConnectionResolverInterface { ...@@ -49,7 +49,7 @@ class DatabaseManager implements ConnectionResolverInterface {
* Get a database connection instance. * Get a database connection instance.
* *
* @param string $name * @param string $name
* @return \Illuminate\Database\Connection * @return Connection
*/ */
public function connection($name = null) public function connection($name = null)
{ {
...@@ -72,7 +72,7 @@ class DatabaseManager implements ConnectionResolverInterface { ...@@ -72,7 +72,7 @@ class DatabaseManager implements ConnectionResolverInterface {
* Reconnect to the given database. * Reconnect to the given database.
* *
* @param string $name * @param string $name
* @return \Illuminate\Database\Connection * @return Connection
*/ */
public function reconnect($name = null) public function reconnect($name = null)
{ {
...@@ -85,7 +85,7 @@ class DatabaseManager implements ConnectionResolverInterface { ...@@ -85,7 +85,7 @@ class DatabaseManager implements ConnectionResolverInterface {
* Make the database connection instance. * Make the database connection instance.
* *
* @param string $name * @param string $name
* @return \Illuminate\Database\Connection * @return Connection
*/ */
protected function makeConnection($name) protected function makeConnection($name)
{ {
...@@ -102,18 +102,26 @@ class DatabaseManager implements ConnectionResolverInterface { ...@@ -102,18 +102,26 @@ class DatabaseManager implements ConnectionResolverInterface {
/** /**
* Prepare the database connection instance. * Prepare the database connection instance.
* *
* @param \Illuminate\Database\Connection $connection * @param Connection $connection
* @return \Illuminate\Database\Connection * @return Connection
*/ */
protected function prepare(Connection $connection) protected function prepare(Connection $connection)
{ {
$connection->setEventDispatcher($this->app['events']); $connection->setEventDispatcher($this->app['events']);
// The database connection can also utilize a cache manager instance when cache
// functionality is used on queries, which provides an expressive interface
// to caching both fluent queries and Eloquent queries that are executed.
$app = $this->app;
$connection->setCacheManager(function() use ($app)
{
return $app['cache'];
});
// We will setup a Closure to resolve the paginator instance on the connection // We will setup a Closure to resolve the paginator instance on the connection
// since the Paginator isn't sued on every request and needs quite a few of // since the Paginator isn't sued on every request and needs quite a few of
// our dependencies. It'll be more efficient to lazily resolve instances. // our dependencies. It'll be more efficient to lazily resolve instances.
$app = $this->app;
$connection->setPaginator(function() use ($app) $connection->setPaginator(function() use ($app)
{ {
return $app['paginator']; return $app['paginator'];
...@@ -167,25 +175,15 @@ class DatabaseManager implements ConnectionResolverInterface { ...@@ -167,25 +175,15 @@ class DatabaseManager implements ConnectionResolverInterface {
} }
/** /**
* Return a new QueryBuilder for a collection * Dynamically pass methods to the default connection.
*
* @param string $collection
* @return QueryBuilder
*/
public function collection($collection)
{
return new QueryBuilder($this->connection(), $collection);
}
/**
* Return a new QueryBuilder for a collection
* *
* @param string $collection * @param string $method
* @return QueryBuilder * @param array $parameters
* @return mixed
*/ */
public function __get($collection) public function __call($method, $parameters)
{ {
return $this->collection($collection); return call_user_func_array(array($this->connection(), $method), $parameters);
} }
} }
\ No newline at end of file
...@@ -5,22 +5,16 @@ use Jenssegers\Mongodb\Connection; ...@@ -5,22 +5,16 @@ use Jenssegers\Mongodb\Connection;
class ConnectionTest extends PHPUnit_Framework_TestCase { class ConnectionTest extends PHPUnit_Framework_TestCase {
private $collection;
private $connection; private $connection;
public function setUp() public function setUp()
{ {
include('tests/app.php'); include('tests/app.php');
$this->connection = new Connection($app['config']['database.connections']['mongodb']); $this->connection = new Connection($app['config']['database.connections']['mongodb']);
$this->collection = $this->connection->getCollection('unittest');
} }
public function tearDown() public function tearDown()
{ {
if ($this->collection)
{
$this->collection->drop();
}
} }
public function testDb() public function testDb()
...@@ -31,8 +25,20 @@ class ConnectionTest extends PHPUnit_Framework_TestCase { ...@@ -31,8 +25,20 @@ class ConnectionTest extends PHPUnit_Framework_TestCase {
public function testCollection() public function testCollection()
{ {
$this->assertInstanceOf('MongoCollection', $this->collection); $collection = $this->connection->getCollection('unittest');
$this->assertEquals('unittest', $this->collection->getName()); $this->assertInstanceOf('MongoCollection', $collection);
$collection = $this->connection->collection('unittests');
$this->assertInstanceOf('Jenssegers\Mongodb\Builder', $collection);
$collection = $this->connection->table('unittests');
$this->assertInstanceOf('Jenssegers\Mongodb\Builder', $collection);
}
public function testDynamic()
{
$dbs = $this->connection->listDBs();
$this->assertTrue(is_array($dbs));
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment