Commit f2964d41 authored by Jens Segers's avatar Jens Segers

Tweaks

parent 9d878930
......@@ -11,9 +11,9 @@
"license" : "MIT",
"require": {
"php": ">=5.3.0",
"illuminate/support": "4.0.x",
"illuminate/database": "4.0.x",
"illuminate/events": "4.0.x"
"illuminate/support": "4.1.x",
"illuminate/database": "4.1.x",
"illuminate/events": "4.1.x"
},
"autoload": {
"psr-0": {
......
......@@ -33,15 +33,9 @@ class Builder extends \Illuminate\Database\Query\Builder {
* @param Connection $connection
* @return void
*/
public function __construct(Connection $connection, $collection = null)
public function __construct(Connection $connection)
{
$this->connection = $connection;
// Set optional collection
if (!is_null($collection))
{
$this->from($collection);
}
}
/**
......
<?php namespace Jenssegers\Mongodb;
use Jenssegers\Mongodb\Builder as QueryBuilder;
use MongoClient;
class Connection extends \Illuminate\Database\Connection {
......@@ -39,6 +40,30 @@ class Connection extends \Illuminate\Database\Connection {
$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.
*
......@@ -92,4 +117,16 @@ class Connection extends \Illuminate\Database\Connection {
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 {
* Get a database connection instance.
*
* @param string $name
* @return \Illuminate\Database\Connection
* @return Connection
*/
public function connection($name = null)
{
......@@ -72,7 +72,7 @@ class DatabaseManager implements ConnectionResolverInterface {
* Reconnect to the given database.
*
* @param string $name
* @return \Illuminate\Database\Connection
* @return Connection
*/
public function reconnect($name = null)
{
......@@ -85,7 +85,7 @@ class DatabaseManager implements ConnectionResolverInterface {
* Make the database connection instance.
*
* @param string $name
* @return \Illuminate\Database\Connection
* @return Connection
*/
protected function makeConnection($name)
{
......@@ -102,18 +102,26 @@ class DatabaseManager implements ConnectionResolverInterface {
/**
* Prepare the database connection instance.
*
* @param \Illuminate\Database\Connection $connection
* @return \Illuminate\Database\Connection
* @param Connection $connection
* @return Connection
*/
protected function prepare(Connection $connection)
{
$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
// 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.
$app = $this->app;
$connection->setPaginator(function() use ($app)
{
return $app['paginator'];
......@@ -167,25 +175,15 @@ class DatabaseManager implements ConnectionResolverInterface {
}
/**
* Return a new QueryBuilder for a collection
*
* @param string $collection
* @return QueryBuilder
*/
public function collection($collection)
{
return new QueryBuilder($this->connection(), $collection);
}
/**
* Return a new QueryBuilder for a collection
* Dynamically pass methods to the default connection.
*
* @param string $collection
* @return QueryBuilder
* @param string $method
* @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;
class ConnectionTest extends PHPUnit_Framework_TestCase {
private $collection;
private $connection;
public function setUp()
{
include('tests/app.php');
$this->connection = new Connection($app['config']['database.connections']['mongodb']);
$this->collection = $this->connection->getCollection('unittest');
}
public function tearDown()
{
if ($this->collection)
{
$this->collection->drop();
}
}
public function testDb()
......@@ -31,8 +25,20 @@ class ConnectionTest extends PHPUnit_Framework_TestCase {
public function testCollection()
{
$this->assertInstanceOf('MongoCollection', $this->collection);
$this->assertEquals('unittest', $this->collection->getName());
$collection = $this->connection->getCollection('unittest');
$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