25 янв. 2014 г., 23:27

xPDO - автопреобразование регистра таблиц в запросах

Добрый день.
Очень понравилась библиотека для работы с Базами данных — xPDO. Попробовал запустить ее работу на чистом PHP-коде, на основе тех статей, которые прочитал про xPDO.
Вот так создал подключение (добавив только кодировку с БД):
$xpdo = new xPDO('mysql:host=localhost;dbname=db',"user","pass", array ( XPDO::OPT_CACHE_PATH => 'cache/', XPDO::OPT_TABLE_PREFIX => '', XPDO::OPT_HYDRATE_FIELDS => true, XPDO::OPT_HYDRATE_RELATED_OBJECTS => true, XPDO::OPT_HYDRATE_ADHOC_FIELDS => true, XPDO::OPT_VALIDATE_ON_SAVE => true, ), array ( PDO::ATTR_ERRMODE => PDO_ERRMODE_SILENT, PDO::ATTR_PERSISTENT => false, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'" ) ); ...
И все заработало…
include("dbConnection.php"); $content = $xpdo->getObject('MyContent', 1); if($page) { echo "Страница - ".$content->name; } else { echo "Ничего не найдено :("; }
Получилось также работать с limit(), where(); Но при попытке создавать Join-запросы — ничего не выводиться. Т.к. проблема, как понимаю в том, что у меня есть названия таблиц — например вот такого формата — «table_name_users», т.е. с нижними подчеркиваниями. И соответственно в запросах надо где-то использовать TableNameUsers, а где то — (в join) — использовать — table_name_users и тогда запрос проходит успешно.
Можно ли как-то настроить xPDO так, что бы можно было везде использовать один и тот же формат названия таблиц в запросах — TableNameUsers?
— Спасибо.
Добрый день.
Вы путаете названия классов и названия таблиц. Это разные вещи. На основании информации о запрошенном классе, формируется запрос к его таблице. Поищите и почитайте подробней о мап-файлах. Вот пример, на котором многое станет понятней.
При вызове использую имя класса «TableNameUsers» (при запросах он делает FROM table_name_users AS TableNameUsers). Но правильно ли понимаю, в запросах, например в JOIN — придется все равно использоваться название table_name_users?
Нет, не правильно. Вот пример.
Я вам советую меньше вопросов задавать, и больше самому покопаться. А еще все топики вот в этом разделе прочитать, начиная с первого. Многое станет ясно.

Добавить комментарий