Выбор View Item возвращает Null (Таблица ссылок контрольного списка)

Кажется, у меня проблема с запросом, показывающим конкретный элемент, если он находится в таблице контрольных списков. В настоящее время у меня есть несколько таблиц, основными из которых являются пользователь, персонаж, серия, элемент & Контрольный список. символ & Серии связаны в таблицу элементов, пока пользователь & Пункты связаны в таблице контрольного списка.

Это работает так: если пользователь нажал кнопку на элементе, который отсутствует в таблице контрольных списков, вошедшим в систему пользователем, этот элемент будет добавлен в таблицу контрольных списков (если в состоянии контрольного списка будет отображаться кнопка удаления) ,

То, что я сейчас работаю, это следующее:

  • Если пользователь не вошел и на главной странице: Показать все элементы с
    Икс
  • Если пользователь вошел в систему и находится на главной странице: Показать все элементы, не входящие в
    таблица контрольного списка с X и все элементы таблицы контрольного списка с
    Поставить галочку.
  • Если пользователь не вошел в клики, просмотрите более подробную информацию об элементе:
    Показать более подробную информацию об элементе с X (страница отдельного элемента)

What I am trying to achieve now is if a user is logged in and clicks view more details, to show the individual item page with a X or Tick (Depending if in checklist table). This is kinda working as items which are in the checklist table can be selected to view the individual item page when logged in. However if the item is not in the checklist table and the user is logged in, nothing is returned back. I am at a total loss how to resolve this and am trying to avoid copying all the items into the checklist table with an additional field (Y/N).

Это запрос, который я использую, чтобы получить конкретную информацию об элементе, если пользователь вошел в систему, в которой я использую codeigniter:

$this->db->select('item.item_id AS item_id, item.item_image AS item_image, line.line_name AS line_name, series.series_name AS series_name, character.character_name AS character_name, checklist.checklist_id AS checklist_id');
$this->db->from('item');
$this->db->join('line', 'item.line_id = line.line_id', 'left');
$this->db->join('series', 'item.series_id = series.series_id', 'left');
$this->db->join('character', 'item.character_id = character.character_id', 'left');
$this->db->join('checklist', 'checklist.item_id = item.item_id', 'left');
$this->db->where('checklist.users_id', $user_id);
$this->db->or_where('checklist.users_id IS NULL'); // Also tried without this line
$this->db->where('item.item_id', $item_id);
$query = $this->db->get();
return $query->row_array();

Любая помощь будет очень полезна, так как остальные три запроса работают так, как задумано, что совпадает с приведенным выше, за исключением возврата ($ query-> result_array) & добавленный or_where (checklist.users_id IS NULL).

0

Решение

Похоже, я нашел исправление. Я переместился туда, где идентификатор элемента в соединении, изменил or_where на где и где на or_where. Итак, рабочий код следующий:

$this->db->select('item.item_id AS item_id, item.item_image AS item_image, line.line_name AS line_name, series.series_name AS series_name, character.character_name AS character_name, checklist.checklist_id AS checklist_id');
$this->db->from('item');
$this->db->join('line', 'item.line_id = line.line_id', 'left');
$this->db->join('series', 'item.series_id = series.series_id', 'left');
$this->db->join('character', 'item.character_id = character.character_id', 'left');
$this->db->join('checklist', 'checklist.item_id = item.item_id', 'left');
$this->db->where('item.item_id', $item_id);
$this->db->or_where('checklist.users_id', $user_id);
$this->db->where('checklist.users_id IS NULL');
$query = $this->db->get();
return $query->row_array();

Не совсем уверен, что or_where должен быть выше где, но он работает для того, что мне тоже нужно.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]