Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по Active Record, yii framework 
V
    Опции темы
s0lman
Дата 16.7.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Всем привет. 
Проблема в следующем. В базе есть три простеньких справочника: категория товара (cat), подкатегория (subcat) и подподкатегория (subsubcat). Они имеют идентичную структуру (id, naim).  В таблице входных данных (post) есть ссылки на их ИД  (cat_id, subcat_id, subsubcat_id).
Для установления связей между упомянутыми таблицами в модели Post указываю relations:
Код

    public function relations()
    {
        return array(
            'cat'=>array(self::BELONGS_TO, 'Cat', 'cat_id'),
            'subcat'=>array(self::BELONGS_TO, 'Subcat', 'subcat_id'),
            'subsubcat'=>array(self::BELONGS_TO, 'Subsubcat', 'subsubcat_id'),
        );
    }

Замечу, что возвращаемые массивы (cat, subcat, subsubcat) содержат идентичные данные.

В представлении указываю уже на вывод
Код

echo CHtml::encode($model->cat->naim);
echo CHtml::encode($model->subcat->naim);
echo CHtml::encode($model->subsubcat->naim)

И тут самое интересное: для subsubcat
Цитата

Trying to get property of non-object

Возвращаемый объект не имеет элемента [subsubcat] => Subcat Object
Все остальные элементы вроде бы как содержатся. Например, обращение CHtml::encode($model->subsubcat_id) ошибок не вызывает.

Собственно, вопрос: почему объект (в данном случае Post) не корректно формируется?
У кого есть какие соображения по этому поводу?


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
SamDark
Дата 16.7.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



s0lman, 
Вроде тут HAS_ONE, а не BELONGS_TO.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
s0lman
Дата 16.7.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



SamDark, пусть и так, но наименование категорий извлекает правильно
Или имеете в виду, что из-за этого может быть косяк?


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
SamDark
Дата 16.7.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



s0lman, 
Конечно может. Это же разные типы отношений: http://yiiframework.ru/doc/guide/ru/database.arr

Добавлено через 54 секунды
Да… ещё покажите код, которым получаете модель.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
s0lman
Дата 16.7.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



В общем, изменил relations
Код

return array(
            'cat'=>array(self::HAS_ONE, 'Cat', 'id'),
            'subcat'=>array(self::HAS_ONE, 'Subcat', 'id'),
            'subsubcat'=>array(self::HAS_ONE, 'Subsubcat', 'id'),
        );

Ошибка та же


Цитата(SamDark @  16.7.2009,  12:55 Найти цитируемый пост)
покажите код, которым получаете модель. 

Вы это имели в виду?
Код

$withOption=array('cat','subcat','subsubcat');
$models=Post::model()->with($withOption)->findAll($criteria);



--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
SamDark
Дата 16.7.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



s0lman, 
А зачем поменяли все ключи на id?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
s0lman
Дата 16.7.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(SamDark @  16.7.2009,  14:28 Найти цитируемый пост)
А зачем поменяли все ключи на id?

Структура таблиц cat, subcat: id, naim.
Частично структура таблицы post (входные данные): id, cat_id, subcat_id.
relations построил в соотвествии с мануалом, данные извлекаются... Кроме злополучных subsubcat  smile 


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
SamDark
Дата 16.7.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



У вас получилась связь по id. т.е. user.id = cat.id. А нужно user.cat_id = cat.id.

Цитата
'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...дополнительные параметры)

т.е. любое отношения связывает id текущей модели (у вас это User) с каким-то полем ForeignKey другой модели ClassName.

Сначала было правильно, хоть и в одну сторону… я сначала подумал, что наоборот получаете пост для категории. Запрос тоже вроде верный.

Где-то должна быть ошибка, но не в том, что было показано.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
s0lman
Дата 17.7.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Проблема решена. Оказалось все банально просто: нарушена целостность данных  smile 


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.