Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Когда в 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)
Не в сети
Сделал через query builder и с помощью массива передал те параметры. Всё теперь работает
Не в сети
Страницы 1