гдемежду передаваемым массивом

Привет, у меня есть запрос, в котором я хочу передать массив в запрос whereBetween.

например, у меня есть массив, который выглядит так

Array
(
    [product_id] => Array
        (
            [0] => 31337
            [1] => 31366
        )

    [lands] => Array
        (
            [0] => 12
            [1] => 23
        )

)

Теперь я хочу найти те product_id, которые находятся между [0] => 31337 и [1] => 31366, и они же идут на землю. Я хочу найти земли, где между [0] => 12 и [1] => 23

теперь скажем, что у меня есть переменная $filters, в которой есть указанный выше массив, и я передаю ее вот так в запрос, как показано ниже.

public function scopeDynamicInBetweenFilter($query, $filters)
    {
        if(!empty($filters)){
            return $query->whereBetween($filters);
        }
        return $query;
    }

Это дает мне ошибку

Ошибка типа: слишком мало аргументов для функции Illuminate\Database\Query\Builder::whereBetween(), 1 передан и ожидается как минимум 2

это нравится в

Builder->whereBetween('product_id' => array('31337', '31366'))->whereBetween('lands' => array('12', '23'))

что можно сделать для достижения этого.


person Aditya Banerjee    schedule 06.02.2018    source источник
comment
покажите свой код, где вы вызываете эту функцию   -  person Sohel0415    schedule 06.02.2018


Ответы (2)


Вы можете попробовать прокрутить фильтры и применить их к запросу.

public function scopeDynamicInBetweenFilter($query, $filters)
{
    if(! empty($filters)) {
        if (is_array($filters)) {
            foreach ($filters as $key => $value) {
                $query->whereBetween($key, $value);
            }
        }
    }

    return $query;
}
person linktoahref    schedule 06.02.2018

Попробуй это:

if(!empty($filters)){
    return $query->whereBetween('product_id', $filters['product_id'])->whereBetween('lands', $filters['lands']);
}
person Sohel0415    schedule 06.02.2018