@WebforSelf

Как переделать запрос mysql в PHP исключив группы?

Есть вот такой фильтр на mysql
Который сейчас работает так, если поле p.visible_to_all=1 то товар показывается всем, учитывая все созданные группы, обычных покупателей и т.д. А вот если стоит p.group_visible_IDгруппы то товар показывается только определенной группе. Как переделать запрос, что если p.visible_to_all=1 то видно всем, кроме групп которые создаются в запросе. Т.е. если p.group_visible_IDгруппы не равно 1 (этих полей может быть несколько) то они не видят товар, даже если p.visible_to_all=1
/*group_visible*/
        if (!$_SESSION['admin'] && $_SESSION['user_group_id'] 
&& !empty($_SESSION['group_visible_ids']) 
&& empty($groups_ids_visible)) {
            $groups_ids_visible = explode(',',$_SESSION['group_visible_ids']);
        }
        $select_groups = '';
        foreach($groups_ids_visible as $gid) {
            $select_groups .= "p.group_visible_".intval($gid).", ";
        }
        $group_visible_filter = '';
        if (!$_SESSION['admin']) {
            $group_visible_filter = 'AND (p.visible_to_all=1';
            if ($_SESSION['user_group_id'] 
&& in_array((int)$_SESSION['user_group_id'], $groups_ids_visible)) {
$group_visible_filter .= $this->db->placehold(' OR p.group_visible_?=1', intval($_SESSION['user_group_id']));
            }
            $group_visible_filter .= ') ';
        }
        /*/group_visible*/
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
alekseyHunter
@alekseyHunter
Android developer
Странная логика. Если товар виден всем, он не может быть не виден одной группе пользователей.
Ладно, допустим у нас есть фильтры. В этом случае проверяет эти visible_group_id, если они равны 1, отправляем запрос без учёта выбранного товара. Например,
SELECT * From product Where product_id not in (SELECT product_id From Group_politics Where group_id = Ваш айдишник группы)

Если visible_all, выводим все товары.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы