Commit a4712ac1 authored by Jens Segers's avatar Jens Segers

Fixes #418

parent 327e2a12
......@@ -3,6 +3,7 @@
use MongoId, MongoRegex, MongoDate, DateTime, Closure;
use Illuminate\Database\Query\Builder as BaseBuilder;
use Illuminate\Database\Query\Expression;
use Illuminate\Support\Collection;
use Jenssegers\Mongodb\Connection;
class Builder extends BaseBuilder {
......@@ -549,6 +550,33 @@ class Builder extends BaseBuilder {
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.
*
......
......@@ -370,6 +370,10 @@ class QueryBuilderTest extends TestCase {
$list = DB::collection('items')->lists('type', 'name');
$this->assertEquals(3, count($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()
......
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