Yii - Manipulando uma variável de sessão

Eu ainda sou um novato quando se trata de usar YII, mas eu tenho trabalhado com variáveis ​​de sessão nos últimos dias, e não consigo entender o conceito por trás do meu erro. Qualquer conselho será apreciado.

Minha função add funciona perfeitamente até agora, para o meu objetivo atual de acompanhar as últimas 3 variáveis ​​adicionadas à minha nutrição variável de sessão.

public function addSessionFavourite($pageId)
{
    $page = Page::model()->findByPk($pageId);
    $categoryName = $page->getCategoryNames();

    if($categoryName[0] == 'Nutrition')
    {
        if(!isset(Yii::app()->session['nutrition']))
        {
            Yii::app()->session['nutrition'] = array();
        }
        $nutrition = Yii::app()->session['nutrition'];
        array_unshift($nutrition, $pageId);
        array_splice($nutrition, 3);
        Yii::app()->session['nutrition'] = $nutrition;
    }

Minha função de remoção parece não funcionar, não importa o que eu tente fazer com ela. A razão pela qual eu estou transferindo a matriz de sessão para uma matriz temporária era tentar contornar o "Se uma variável globalizada é unset () dentro de uma função, somente a variável local é destruída. A variável no ambiente de chamada reterá a mesmo valor que antes de unset () ser chamado. " Mas foi um fracasso total.

public function removeSessionFavourite($pageId)
{
    $page = Page::model()->findByPk($pageId);
    $categoryName = $page->getCategoryNames();

    if($categoryName[0] == 'Nutrition')
    {
        if(!isset(Yii::app()->session['nutrition']))
        {
            return true;
        }
        $nutritionArray = Yii::app()->session['nutrition'];
        unset($nutritionArray[$pageId]);
        Yii::app()->session['nutrition'] = $nutritionArray;
    }

Qualquer conselho ou empurrão para a direção correta será apreciado.

questionAnswers(1)

yourAnswerToTheQuestion