Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.02.2017 23:24:02

Не могу разобраться с запросом

Когда в phpMyAdmin  делаю следующий SQL запрос:

SELECT products.id FROM products, characteristics 
                WHERE products.id = characteristics.pr_id AND products.c_id = 1
                AND characteristics.value IN ('8-core', 'Quad-Core') 
                AND price BETWEEN 50 AND 5000 GROUP BY products.id

Всё работает правильно. А когда в модели пытаюсь это сделать следующим образом, то на выходе получаю пустой массив

        $products = DB::select('SELECT products.id FROM products, characteristics 
                WHERE products.id = characteristics.pr_id AND products.c_id = ?
                AND characteristics.value IN (?) 
                AND price BETWEEN ? AND ? GROUP BY products.id', [$catId, $query, $minPrice, $maxPrice]); 
        dd($products);

В чём может быть проблема?
PS: если во втором случае передавать только  один параметр с помощью переменной $query(например 'Quad-Core') то выдаёт правильный результат. Но как только передаю два и более, то получаю пустой массив.

Контроллер:

        $values = Input::get('value');
        $category = Input::get('cat');
        $brand = Input::get('brand');
        $minPrice = Input::get('min_price');
        $maxPrice = Input::get('max_price');
        $query = implode('", "', $values);

        $product = new Product();
        $products = $product->getProductsByPar($query, $minPrice, $maxPrice, $category, $brand);

Модель

    public function getProductsByPar($query, $minPrice, $maxPrice, $cat, $brand)
    {
        $category = new Category();
        $brands = new Brand();
        $minPrice = (int)$minPrice;
        $maxPrice = (int)$maxPrice;
        $catId = $category->getCategoryId($cat)->id;

        if($brand == 'none')
        {
        $products = DB::select('SELECT products.id FROM products, characteristics 
                WHERE products.id = characteristics.pr_id AND products.c_id = ?
                AND characteristics.value IN (?) 
                AND price BETWEEN ? AND ? GROUP BY products.id', [$catId, $query, $minPrice, $maxPrice]);            
        }
        else
        {
        $brandId = $brands->getBrandId($brand)->id;
        $products = DB::select('SELECT products.id FROM products, characteristics 
                WHERE products.id = characteristics.pr_id AND products.c_id = ?
                AND products.b_id = ? AND characteristics.value IN (?) 
                AND price BETWEEN ? AND ? GROUP BY products.id', [$catId, $brandId, $query, $minPrice, $maxPrice]);             
        }
        dd($products);
        return $products;

Изменено laravelNewbie (15.02.2017 23:24:38)

Не в сети

#2 16.02.2017 02:14:24

Re: Не могу разобраться с запросом

Сделал через query builder и с помощью массива передал те параметры. Всё теперь работает

Не в сети

Подвал раздела