Commit 7e8a9cc4 authored by Jens Segers's avatar Jens Segers

Fix pull/push logic

parent bab6b2d2
...@@ -515,11 +515,14 @@ class Builder extends \Illuminate\Database\Query\Builder { ...@@ -515,11 +515,14 @@ class Builder extends \Illuminate\Database\Query\Builder {
// Use the addToSet operator in case we only want unique items. // Use the addToSet operator in case we only want unique items.
$operator = $unique ? '$addToSet' : '$push'; $operator = $unique ? '$addToSet' : '$push';
// Check if we are pushing multiple values.
$multipleValues = (is_array($value) and array_keys($value) === range(0, count($value) - 1));
if (is_array($column)) if (is_array($column))
{ {
$query = array($operator => $column); $query = array($operator => $column);
} }
else if (is_array($value)) else if ($multipleValues)
{ {
$query = array($operator => array($column => array('$each' => $value))); $query = array($operator => array($column => array('$each' => $value)));
} }
...@@ -540,8 +543,13 @@ class Builder extends \Illuminate\Database\Query\Builder { ...@@ -540,8 +543,13 @@ class Builder extends \Illuminate\Database\Query\Builder {
*/ */
public function pull($column, $value = null) public function pull($column, $value = null)
{ {
var_dump($value);
// Check if we passed an associative array.
$multipleValues = (is_array($value) and array_keys($value) === range(0, count($value) - 1));
// If we are pulling multiple values, we need to use $pullAll. // If we are pulling multiple values, we need to use $pullAll.
$operator = is_array($value) ? '$pullAll' : '$pull'; $operator = $multipleValues ? '$pullAll' : '$pull';
if (is_array($column)) if (is_array($column))
{ {
......
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