Я только что установил DataMapper с CodeIgniter и написал модели по мере необходимости.
Однако я, похоже, что-то упустил, так как при запуске запроса DataMapper не видит переопределения имени таблицы и думает, что таблицы вообще нет.
Забавно, что если я удаляю переопределение, оно работает как надо (хотя и с ошибкой, сообщающей, что автоматически сгенерированный tabled не существует).
Код модели:
class Activity extends Datamapper {
var $table = 'activity_log';
var $has_one = [
'user'
];
}
Код контроллера:
$activity = new Activity(1);
Ошибка:
Error Number: 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 'WHERE `.`id` = 1' at line 2
SELECT * WHERE `.`id` = 1
Как я уже упоминал выше, если я удалю var $ tables = ‘activity_log’; тогда он вернется к поиску «действий» за столом, как и положено.
правила
Модели DataMapper должны называться единственной версией объекта
имя, с заглавной первой буквой. Так что для объекта пользователя,
Модель DataMapper будет называться User. Модель должна иметь
соответствующая таблица в базе данных, названная строчными
версия названия объекта. Таким образом, для модели DataMapper с именем User
Таблица будет именоваться пользователями. Для модели DataMapper с именем Country
таблица будет называться страны.В большинстве случаев разница между единственной и множественной версиями
имени объекта — это просто вопрос добавления буквы s в конце.
Ваша модель должна быть названа как Activity_log
,
Других решений пока нет …