В таблице значения поля хранятся в виде
["x"] или
["x","x"] где х=число - это номер
tag_id
При создании таблицы столбец `tag_id` text NOT NULL
Это поле
Массив. Главная особенность столбца с данными - это кавычки ["значение"]
public static function getItems($equiv) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
if(!is_array($equiv)) {
$equiv = (array) json_decode($equiv);
}
$equiv = implode(',', $equiv);
$query->select($db->quoteName(array('item_id')));
$query->from($db->quoteName('#__items'));
$query->where($db->quoteName('tag_id').' IN ' .$equiv );
$db->setQuery($query);
return $db->loadObjectList();
}
Массив перевожу в строку функцией implode.
Пробовал операторы: IN,=,LIKE.
mySql постоянно ругается на синтаксис, но цифровые значения
tag_id выводит корректно.
ОШИБКА: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
Пробовал так:
$query->where($db->quoteName('tag_id'). ' IN ["' . implode(', ', $equiv) .'"]' );
Всё равно ошибка.
Из
view.php передаю значение
item->tag_id в
helper.php где запросом хочу выбрать материалы с такими же тегами или тегом.
Генерируемый запрос:
SQL=SELECT `item_id`` FROM `items` WHERE `tag_id` IN ["1"]
В столбце tag_id хранится массив формата json.
Как написать условие
where для сравнения?