Commit 76b86559 authored by pi0's avatar pi0

Backward compability

parent fe278ac6
...@@ -14,6 +14,9 @@ class MongodbServiceProvider extends ServiceProvider ...@@ -14,6 +14,9 @@ class MongodbServiceProvider extends ServiceProvider
Model::setConnectionResolver($this->app['db']); Model::setConnectionResolver($this->app['db']);
Model::setEventDispatcher($this->app['events']); Model::setEventDispatcher($this->app['events']);
$s=explode('.',\Illuminate\Foundation\Application::VERSION);
define('SHOULD_RETURN_COLLECTION',(10*$s[0]+$s[1])>=53);
} }
/** /**
......
...@@ -11,6 +11,7 @@ use MongoDB\BSON\ObjectID; ...@@ -11,6 +11,7 @@ use MongoDB\BSON\ObjectID;
use MongoDB\BSON\Regex; use MongoDB\BSON\Regex;
use MongoDB\BSON\UTCDateTime; use MongoDB\BSON\UTCDateTime;
class Builder extends BaseBuilder class Builder extends BaseBuilder
{ {
/** /**
...@@ -207,8 +208,7 @@ class Builder extends BaseBuilder ...@@ -207,8 +208,7 @@ class Builder extends BaseBuilder
// Translate count into sum. // Translate count into sum.
if ($function == 'count') { if ($function == 'count') {
$group['aggregate'] = ['$sum' => 1]; $group['aggregate'] = ['$sum' => 1];
} } // Pass other functions directly.
// Pass other functions directly.
else { else {
$group['aggregate'] = ['$' . $function => '$' . $column]; $group['aggregate'] = ['$' . $function => '$' . $column];
} }
...@@ -259,10 +259,8 @@ class Builder extends BaseBuilder ...@@ -259,10 +259,8 @@ class Builder extends BaseBuilder
$results = iterator_to_array($this->collection->aggregate($pipeline, $options)); $results = iterator_to_array($this->collection->aggregate($pipeline, $options));
// Return results // Return results
return new Collection($results); return SHOULD_RETURN_COLLECTION ? new Collection($results) : $results;
} } // Distinct query
// Distinct query
elseif ($this->distinct) { elseif ($this->distinct) {
// Return distinct results directly // Return distinct results directly
$column = isset($this->columns[0]) ? $this->columns[0] : '_id'; $column = isset($this->columns[0]) ? $this->columns[0] : '_id';
...@@ -274,10 +272,8 @@ class Builder extends BaseBuilder ...@@ -274,10 +272,8 @@ class Builder extends BaseBuilder
$result = $this->collection->distinct($column); $result = $this->collection->distinct($column);
} }
return new Collection($result); return SHOULD_RETURN_COLLECTION ? new Collection($result) : $result;
} } // Normal query
// Normal query
else { else {
$columns = []; $columns = [];
...@@ -317,7 +313,8 @@ class Builder extends BaseBuilder ...@@ -317,7 +313,8 @@ class Builder extends BaseBuilder
$cursor = $this->collection->find($wheres, $options); $cursor = $this->collection->find($wheres, $options);
// Return results as an array with numeric keys // Return results as an array with numeric keys
return new Collection(iterator_to_array($cursor, false)); $results = iterator_to_array($cursor, false);
return SHOULD_RETURN_COLLECTION ? new Collection($results) : $results;
} }
} }
...@@ -363,7 +360,7 @@ class Builder extends BaseBuilder ...@@ -363,7 +360,7 @@ class Builder extends BaseBuilder
$this->aggregate = null; $this->aggregate = null;
if (isset($results[0])) { if (isset($results[0])) {
$result = (array) $results[0]; $result = (array)$results[0];
return $result['aggregate']; return $result['aggregate'];
} }
...@@ -376,7 +373,7 @@ class Builder extends BaseBuilder ...@@ -376,7 +373,7 @@ class Builder extends BaseBuilder
*/ */
public function exists() public function exists()
{ {
return ! is_null($this->first()); return !is_null($this->first());
} }
/** /**
...@@ -464,20 +461,20 @@ class Builder extends BaseBuilder ...@@ -464,20 +461,20 @@ class Builder extends BaseBuilder
foreach ($values as $value) { foreach ($values as $value) {
// As soon as we find a value that is not an array we assume the user is // As soon as we find a value that is not an array we assume the user is
// inserting a single document. // inserting a single document.
if (! is_array($value)) { if (!is_array($value)) {
$batch = false; $batch = false;
break; break;
} }
} }
if (! $batch) { if (!$batch) {
$values = [$values]; $values = [$values];
} }
// Batch insert // Batch insert
$result = $this->collection->insertMany($values); $result = $this->collection->insertMany($values);
return (1 == (int) $result->isAcknowledged()); return (1 == (int)$result->isAcknowledged());
} }
/** /**
...@@ -491,7 +488,7 @@ class Builder extends BaseBuilder ...@@ -491,7 +488,7 @@ class Builder extends BaseBuilder
{ {
$result = $this->collection->insertOne($values); $result = $this->collection->insertOne($values);
if (1 == (int) $result->isAcknowledged()) { if (1 == (int)$result->isAcknowledged()) {
if (is_null($sequence)) { if (is_null($sequence)) {
$sequence = '_id'; $sequence = '_id';
} }
...@@ -511,7 +508,7 @@ class Builder extends BaseBuilder ...@@ -511,7 +508,7 @@ class Builder extends BaseBuilder
public function update(array $values, array $options = []) public function update(array $values, array $options = [])
{ {
// Use $set as default operator. // Use $set as default operator.
if (! starts_with(key($values), '$')) { if (!starts_with(key($values), '$')) {
$values = ['$set' => $values]; $values = ['$set' => $values];
} }
...@@ -530,7 +527,7 @@ class Builder extends BaseBuilder ...@@ -530,7 +527,7 @@ class Builder extends BaseBuilder
{ {
$query = ['$inc' => [$column => $amount]]; $query = ['$inc' => [$column => $amount]];
if (! empty($extra)) { if (!empty($extra)) {
$query['$set'] = $extra; $query['$set'] = $extra;
} }
...@@ -588,7 +585,7 @@ class Builder extends BaseBuilder ...@@ -588,7 +585,7 @@ class Builder extends BaseBuilder
{ {
$wheres = $this->compileWheres(); $wheres = $this->compileWheres();
$result = $this->collection->DeleteMany($wheres); $result = $this->collection->DeleteMany($wheres);
if (1 == (int) $result->isAcknowledged()) { if (1 == (int)$result->isAcknowledged()) {
return $result->getDeletedCount(); return $result->getDeletedCount();
} }
...@@ -617,7 +614,7 @@ class Builder extends BaseBuilder ...@@ -617,7 +614,7 @@ class Builder extends BaseBuilder
{ {
$result = $this->collection->drop(); $result = $this->collection->drop();
return (1 == (int) $result->ok); return (1 == (int)$result->ok);
} }
/** /**
...@@ -634,7 +631,7 @@ class Builder extends BaseBuilder ...@@ -634,7 +631,7 @@ class Builder extends BaseBuilder
// Convert ObjectID's to strings so that lists can do its work. // Convert ObjectID's to strings so that lists can do its work.
$results = $results->map(function ($item) { $results = $results->map(function ($item) {
$item['_id'] = (string) $item['_id']; $item['_id'] = (string)$item['_id'];
return $item; return $item;
}); });
...@@ -656,10 +653,8 @@ class Builder extends BaseBuilder ...@@ -656,10 +653,8 @@ class Builder extends BaseBuilder
// Execute the closure on the mongodb collection // Execute the closure on the mongodb collection
if ($expression instanceof Closure) { if ($expression instanceof Closure) {
return call_user_func($expression, $this->collection); return call_user_func($expression, $this->collection);
} } // Create an expression for the given value
elseif (!is_null($expression)) {
// Create an expression for the given value
elseif (! is_null($expression)) {
return new Expression($expression); return new Expression($expression);
} }
...@@ -725,7 +720,7 @@ class Builder extends BaseBuilder ...@@ -725,7 +720,7 @@ class Builder extends BaseBuilder
*/ */
public function drop($columns) public function drop($columns)
{ {
if (! is_array($columns)) { if (!is_array($columns)) {
$columns = [$columns]; $columns = [$columns];
} }
...@@ -760,13 +755,13 @@ class Builder extends BaseBuilder ...@@ -760,13 +755,13 @@ class Builder extends BaseBuilder
protected function performUpdate($query, array $options = []) protected function performUpdate($query, array $options = [])
{ {
// Update multiple items by default. // Update multiple items by default.
if (! array_key_exists('multiple', $options)) { if (!array_key_exists('multiple', $options)) {
$options['multiple'] = true; $options['multiple'] = true;
} }
$wheres = $this->compileWheres(); $wheres = $this->compileWheres();
$result = $this->collection->UpdateMany($wheres, $query, $options); $result = $this->collection->UpdateMany($wheres, $query, $options);
if (1 == (int) $result->isAcknowledged()) { if (1 == (int)$result->isAcknowledged()) {
return $result->getModifiedCount() ? $result->getModifiedCount() : $result->getUpsertedCount(); return $result->getModifiedCount() ? $result->getModifiedCount() : $result->getUpsertedCount();
} }
...@@ -857,9 +852,7 @@ class Builder extends BaseBuilder ...@@ -857,9 +852,7 @@ class Builder extends BaseBuilder
foreach ($where['values'] as &$value) { foreach ($where['values'] as &$value) {
$value = $this->convertKey($value); $value = $this->convertKey($value);
} }
} } // Single value.
// Single value.
elseif (isset($where['value'])) { elseif (isset($where['value'])) {
$where['value'] = $this->convertKey($where['value']); $where['value'] = $this->convertKey($where['value']);
} }
...@@ -911,20 +904,18 @@ class Builder extends BaseBuilder ...@@ -911,20 +904,18 @@ class Builder extends BaseBuilder
$regex = preg_replace('#(^|[^\\\])%#', '$1.*', preg_quote($value)); $regex = preg_replace('#(^|[^\\\])%#', '$1.*', preg_quote($value));
// Convert like to regular expression. // Convert like to regular expression.
if (! starts_with($value, '%')) { if (!starts_with($value, '%')) {
$regex = '^' . $regex; $regex = '^' . $regex;
} }
if (! ends_with($value, '%')) { if (!ends_with($value, '%')) {
$regex = $regex . '$'; $regex = $regex . '$';
} }
$value = new Regex($regex, 'i'); $value = new Regex($regex, 'i');
} } // Manipulate regexp operations.
// Manipulate regexp operations.
elseif (in_array($operator, ['regexp', 'not regexp', 'regex', 'not regex'])) { elseif (in_array($operator, ['regexp', 'not regexp', 'regex', 'not regex'])) {
// Automatically convert regular expression strings to Regex objects. // Automatically convert regular expression strings to Regex objects.
if (! $value instanceof Regex) { if (!$value instanceof Regex) {
$e = explode('/', $value); $e = explode('/', $value);
$flag = end($e); $flag = end($e);
$regstr = substr($value, 1, -(strlen($flag) + 1)); $regstr = substr($value, 1, -(strlen($flag) + 1));
...@@ -938,7 +929,7 @@ class Builder extends BaseBuilder ...@@ -938,7 +929,7 @@ class Builder extends BaseBuilder
} }
} }
if (! isset($operator) or $operator == '=') { if (!isset($operator) or $operator == '=') {
$query = [$column => $value]; $query = [$column => $value];
} elseif (array_key_exists($operator, $this->conversion)) { } elseif (array_key_exists($operator, $this->conversion)) {
$query = [$column => [$this->conversion[$operator] => $value]]; $query = [$column => [$this->conversion[$operator] => $value]];
......
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