Добавить поле в stdClass

otrubin

Новичок
Добавить поле в stdClass

Здравствуйте. Пишу компонент для Joomla. Имеется метод:
PHP:
function getUserWallpapers($user){
        $userId = $user->id;
        $query = 'SELECT * FROM #__wallpapers'.
                ' WHERE owner = "'.$userId.'"';
        $this->_db->setQuery($query);
        $objArray = $this->_getList($query);
 
        $num = count($objArray);
        for ($i=0; $i < $num ;$i++) {
            $obj=$objArray[$i];
            //get category name
            $query = 'SELECT * FROM #__wallpapers_categories WHERE id = "'.$obj->catid.'"';
            $this->_db->setQuery($query);
            $catobj = $this->_db->loadObject();
            if ($catObj)
                $obj->categoryName = $catobj;
        }
 
        return $objArray;
    }
Я новичёк в php, и в Joomla соответственно тоже. Насколько я понимаю в $obj должно появиться поле "categoryName", которого там ранее не было. Но этого почему-то не происходит. Я потом массив $objArray вывожу в браузер - print_r($objArray), и этого поля там не вижу, хотя под отладчиком видно, что присвоение $obj->categoryName = $catobj; происходит.
 

otrubin

Новичок
Конечно можно вместо объекта использовать ассоциативный массив. Но объекты после СИ и Дельфи как-то привычнее :)

-~{}~ 19.02.10 16:30:

Вывод в браузер идет в другом модуле. И там я почему-то не вижу поля "categoryName"
 

dimagolov

Новичок
otrubin, а почему нельзя сделать
[sql]
LEFT JOIN #__wallpapers_categories ON #__wallpapers_categories.id = #__wallpapers.catid
[/sql]
и избавиться от запросов в цикле? заодно все поля #__wallpapers_categories будут присутствовать в полученном объекте сразу.
 

otrubin

Новичок
Да, так лучше во всех отношениях. В sql пока не силён.
А с stdClass всё же странно получается.
 
Сверху