У меня есть запрос mysql, который выглядит так: $query="SELECT * FROM #__content"
. Я понятия не имею, что означает #__ перед содержимым? Если я создал статью X категории Y, то как я могу обратиться к таблице mysql, содержащей X в Joomla?
#__
является префиксом ваших таблиц
#__
– это просто префикс таблицы базы данных и определяется вами. #__
Если это не было определено, людям приходилось вручную вводить свои префиксы в каждое расширение, требующее доступа к базе данных, которое, как вы можете себе представить, было бы раздражать.
Например, если префикс таблицы базы данных j25
, то:
#__content
= j25_content
Как говорили другие, хеш-строка подчеркивания «#_» – это префикс, используемый для имен таблиц по классу JDatabase от Joomla !. ( NB есть только одно подчеркивание, второе подчеркивание поддерживается для удобства чтения в именах таблиц).
Когда вы впервые настроите Joomla! вам предоставляется возможность установить префикс или использовать случайное сгенерированное во время. Вы можете прочитать о том, как проверить префикс здесь .
Когда вы обращаетесь к базе данных с использованием класса JDatabase, она предоставляет вам механизм абстракции, чтобы вы могли взаимодействовать с базой данных, которую использует Joomla, без необходимости специально кода для MySQL или MSSQL или PostgreSQL и т. Д.
Когда JDatabase готовит запрос перед его исполнением, он заменяет любые вхождения #_
в сегменте запроса с настройкой префикса, когда Joomla! был установлен. например
// Get the global DB object. $db = JFactory::getDBO(); // Create a new query object. $query = $db->getQuery(true); // Select some fields $query->select('*'); // Set the from From segment $query->from('#__myComponents_Table');
Позже, когда вы выполняете запрос, JDatabase будет изменять сегмент SQL из
from #__myComponents_Table
до
from jp25_myComponents_Table
– если префикс jp25
, перед его исполнением.