Commit a4712ac1 authored by Jens Segers's avatar Jens Segers

Fixes #418

parent 327e2a12
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
use MongoId, MongoRegex, MongoDate, DateTime, Closure; use MongoId, MongoRegex, MongoDate, DateTime, Closure;
use Illuminate\Database\Query\Builder as BaseBuilder; use Illuminate\Database\Query\Builder as BaseBuilder;
use Illuminate\Database\Query\Expression; use Illuminate\Database\Query\Expression;
use Illuminate\Support\Collection;
use Jenssegers\Mongodb\Connection; use Jenssegers\Mongodb\Connection;
class Builder extends BaseBuilder { class Builder extends BaseBuilder {
...@@ -549,6 +550,33 @@ class Builder extends BaseBuilder { ...@@ -549,6 +550,33 @@ class Builder extends BaseBuilder {
return (1 == (int) $result['ok']); return (1 == (int) $result['ok']);
} }
/**
* Get an array with the values of a given column.
*
* @param string $column
* @param string $key
* @return array
*/
public function lists($column, $key = null)
{
if ($key == '_id')
{
$results = new Collection($this->get([$column, $key]));
// Convert MongoId's to strings so that lists can do its work.
$results = $results->map(function($item)
{
$item['_id'] = (string) $item['_id'];
return $item;
});
return $results->lists($column, $key);
}
return parent::lists($column, $key);
}
/** /**
* Create a raw database expression. * Create a raw database expression.
* *
......
...@@ -370,6 +370,10 @@ class QueryBuilderTest extends TestCase { ...@@ -370,6 +370,10 @@ class QueryBuilderTest extends TestCase {
$list = DB::collection('items')->lists('type', 'name'); $list = DB::collection('items')->lists('type', 'name');
$this->assertEquals(3, count($list)); $this->assertEquals(3, count($list));
$this->assertEquals(array('knife' => 'sharp', 'fork' => 'sharp', 'spoon' => 'round'), $list); $this->assertEquals(array('knife' => 'sharp', 'fork' => 'sharp', 'spoon' => 'round'), $list);
$list = DB::collection('items')->lists('name', '_id');
$this->assertEquals(4, count($list));
$this->assertEquals(24, strlen(key($list)));
} }
public function testAggregate() public function testAggregate()
......
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