PdoPage с собственным классом
Добрый день, ребят подскажите:
При вызове pdoage с кастомным классом, и использовании leftjoin. получаем ошибки вызова присоединяемых классов код вызова (под катом):
Поля A3pfrp.status_id и A3pfrp.theme_category_id у экземпляра класса A3pfrp могут быть не заполнены. И в логи мы получаем кучу сообщений о том, что не pdoPage не может подгрузить классы A3pfrpStatus и A3pfrpThemeCategory, т.к. по факту связи нет. Как это исправить? Как можно организовать проверку not null, или как подобное решить?
p.s. оставит ошибки в логах не вариант, из за спама этих сообщений можно пропустить реальные ошибки.
При вызове pdoage с кастомным классом, и использовании leftjoin. получаем ошибки вызова присоединяемых классов код вызова (под катом):
[[!pdoPage?
&tpl=`a3pfrp_line_tpl`
&class=`A3pfrp`
&loadModels = `bstpfrp`
&leftJoin=`{
"Status": {
"class" : "A3pfrpStatus",
"on" : "A3pfrp.status_id = Status.id"
},
"Theme" : {
"class" : "A3pfrpThemeCategory",
"on" : "A3pfrp.theme_category_id = Theme.id"
}
}`
&select=`{
"A3pfrp": "*",
"Status": "name",
"Theme" : "category_name"
}`
&showLog=`0`
&sortby=`A3pfrp.id`
&sortdir=`ASC`
&limit=`10`
/*TPL SECTION */
&showUnpublished=`0`
]]
Поля A3pfrp.status_id и A3pfrp.theme_category_id у экземпляра класса A3pfrp могут быть не заполнены. И в логи мы получаем кучу сообщений о том, что не pdoPage не может подгрузить классы A3pfrpStatus и A3pfrpThemeCategory, т.к. по факту связи нет. Как это исправить? Как можно организовать проверку not null, или как подобное решить?
p.s. оставит ошибки в логах не вариант, из за спама этих сообщений можно пропустить реальные ошибки.
Комментарии: 4
по правилам проектирования БД внешние ключи не могут быть null
Спасибо за ответ.
Создал решение на скорую руку, где в таблицах (справочник статусов и справочник категорий) создал записи «Без категории» и «Без статуса», и назначил их ID как дефолтные.
Я правильно понимаю, что это нормальное решение, и вся моя ошибка в данном случае в неверном понимании принципа проектирования БД?
Создал решение на скорую руку, где в таблицах (справочник статусов и справочник категорий) создал записи «Без категории» и «Без статуса», и назначил их ID как дефолтные.
Я правильно понимаю, что это нормальное решение, и вся моя ошибка в данном случае в неверном понимании принципа проектирования БД?
Да все верно. В классических реляционных базах данных у вас должна быть связь между присоединяемыми таблицами. Т.к. связи у вас нет, то необходимо всю эту проверку за бд делать в приложении.
Понятно, спасибо большое за оперативную помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.