technokid Posted October 28, 2015 Report Share Posted October 28, 2015 (edited) Заметил момент, при попытки отфильтровать товары у которых количество товаров 0, мне выдает, только те, у которых 1 либо все варианты с кол-вом товара 0, но те у которых один вариант кол-во "безлим" а второй вариант 0, то фильтр его не находит.Пытался поправить запрос в api/Products.php в функции get_products() но честно, запутался if(isset($filter['in_stock'])) $in_stock_filter = $this->db->placehold('AND (SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['in_stock'])); Подскажите как поправить запрос Edited October 28, 2015 by technokid Quote Link to post Share on other sites
technokid Posted October 29, 2015 Author Report Share Posted October 29, 2015 неужели никто не решал эту проблему? Ведь это явный баг Quote Link to post Share on other sites
Kosjak76 Posted October 29, 2015 Report Share Posted October 29, 2015 Интересно, как это?Вы придумали запрос, он у вас не работает - и это БАГ Симплы? Quote Link to post Share on other sites
technokid Posted October 29, 2015 Author Report Share Posted October 29, 2015 Интересно, как это?Вы придумали запрос, он у вас не работает - и это БАГ Симплы? Ничего я не придумал. Это стандартный запрос симплы. вот тут сами посмотрите https://github.com/pikusov/Simpla/blob/master/api/Products.php#L72, еще как вариант можете войти в демо версию админки симплы и сами увидите этот баг Quote Link to post Share on other sites
Kors Posted October 29, 2015 Report Share Posted October 29, 2015 (edited) То, что Вы описали - никакой не баг, работает правильно, именно так, как задумано.Схема проста - есть товар, у него несколько вариантов, у вариантов есть количество (stock). Количество для товара - формально не определено. Когда говорят про кол-во товара, обычно имеют в виду суммарное количество его вариантов. Поэтому товар с количеством =0 - это товар, у которого ВСЕ варианты имеют кол-во 0. Если Вам хочется трактовать это иначе, например, если для Вас товар с количеством 0 - это тот, у которого в одном варианте 0, а в других - произвольное число, то программируйте указанный фрагмент по-своему. Edited October 29, 2015 by Kors Quote Link to post Share on other sites
technokid Posted October 29, 2015 Author Report Share Posted October 29, 2015 То, что Вы описали - никакой не баг, работает правильно, именно так, как задумано.Схема проста - есть товар, у него несколько вариантов, у вариантов есть количество (stock). Количество для товара - формально не определено. Когда говорят про кол-во товара, обычно имеют в виду суммарное количество его вариантов. Поэтому товар с количеством =0 - это товар, у которого ВСЕ варианты имеют кол-во 0. Если Вам хочется трактовать это иначе, например, если для Вас товар с количеством 0 - это тот, у которого в одном варианте 0, а в других - произвольное число, то программируйте указанный фрагмент по-своему.Я с Вами не совсем согласен.Я могу сказать как кол-во товара в общем, так и количество вариантов по товару. Если мне дают возможность показать товары которые отсутствуют, то почему я не могу видеть вариант товара который закончился. Когда у меня магазин в 15 тысяч позиций или больше, как я должен отловить ту позицию, которая закончилась? Quote Link to post Share on other sites
Kors Posted October 29, 2015 Report Share Posted October 29, 2015 Когда у меня магазин в 15 тысяч позиций или больше, как я должен отловить ту позицию, которая закончилась?Отловить можно, сделав экспорт. Если это не подходит то, похоже, Вам надо что-то свое специфичное. Тогда это отдельной доработкой. Если готовы оплачивать, обращайтесь... Quote Link to post Share on other sites
technokid Posted October 30, 2015 Author Report Share Posted October 30, 2015 Отловить можно, сделав экспорт. Скажу честно, при 15 тысячах товара, экспорт работает очень медленно.На счет отдельной доработки, я не вижу тут что-то глобальное дорабатывать. Ведь на самом деле, тут просто нужно изменить запрос.Вот так он выглядит если нажать "Отсутствующие" SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.partner, p.featured, p.meta_title, p.meta_keywords, p.meta_description, b.name as brand, b.url as brand_url FROM __products p LEFT JOIN __brands b ON p.brand_id = b.id WHERE 1 AND (SELECT count(*)>0 FROM s_variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 0 ORDER BY p.position DESC LIMIT 0, 20 Я не понимаю что означает вот этот кусок WHERE 1 AND (SELECT count(*)>0 FROM s_variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 0 вернее SELECT count(*)>0 Тут вопрос более в помощи с запросом, а не доработкой Quote Link to post Share on other sites
Kors Posted October 30, 2015 Report Share Posted October 30, 2015 На счет отдельной доработки, я не вижу тут что-то глобальное дорабатывать. Ведь на самом деле, тут просто нужно изменить запрос. Изменить его можно тысячами способов. Вам все равно каким? Я не понимаю что означает вот этот кусок WHERE 1 AND (SELECT count(*)>0 FROM s_variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = 0 вернее SELECT count(*)>0 Вы вот даже не можете:1. точно сформулировать свой вопрос,2. точно сказать, какой кусок непонятен,3. прочитать учебник по SQL, чтобы там получить ответ,4. чуть-чуть поэкспериментировать с запросом в PhpMyAdmin, чтобы посмотреть на результат и попытаться понять смысл (который довольно прост и прозрачен). Только можете утверждать, что тут, мол, все легко.Сам я не знаю, но знаю, что им это легко.А спецы, такие нехорошие, наперебой не кидаются отвечать... Тут вопрос более в помощи с запросом, а не доработкой Если б Вы еще могли ТОЛКОМ задать этот вопрос... Quote Link to post Share on other sites
technokid Posted October 30, 2015 Author Report Share Posted October 30, 2015 так я в самом первом посте этой теме описал все. Quote Link to post Share on other sites
Kors Posted October 31, 2015 Report Share Posted October 31, 2015 Если изменить запрос в указанном Вами месте так, как Вы желаете, то1. В админке будет работать по Вашему желанию,2. Но на сайте, скорее всего, исчезнет в показе львиная доля товаров,3. И будете Вы потом писать негатив на того, кто Вам пытался помочь. По-хорошему, чтобы достичь Ваших (туманно объясненных целей), надо проводить более сложные изменения в НЕСКОЛЬКИХ местах. Потому никто и не спешит изменить для Вас в запросе пару-тройку лексем... Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.