使用YiiMongoDbSuite删除数组元素

时间:2013-10-11 03:18:16

标签: php mongodb yii yii-extensions

我有一些代码应该从嵌入的MongoDB文档中删除记录。

以下是代码:

    public function actionDeleteSaved()
    {
        $savedLink = $_POST['savedLink'];
        $userId = Yii::app()->user->getId();
        $current = SaveLink::model()->findByPk($userId);

        if(in_array($savedLink, $current->links))
        {
            array_slice($current->links, $savedLink);
            $current->save();
        }
    }

这是将数据传递给控制器​​操作方法的原因:

echo CHtml::ajaxButton(
        'delete', 
        Yii::app()->createUrl("dashboard/index/deletesaved"),
        array( // ajax options
            'type' => 'POST',
            'context' => "js:this",
            'data' => array(
                'savedLink' => $savedLink
            )
        ),
        array( //html options
            'class'=>'deleteSaved'
        )
    );

这就是renderPartial的样子:

        $this->renderPartial('_deleteSaved', array('savedLink'=>$s));

我想要发布的内容正在正确发布,但我不确定它是否正在与Controller通信并传递数据,或者我的代码是否从数据库中删除数据是正确的。

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于array_slice部分。由于specified in php docs数组切片修改数组参数。

改为使用array_splice(修改传递的数组参数)和array_search获取密钥:

if(in_array($savedLink, $current->links))
{
        $key = array_search($savedLink, $current->links);
        array_splice($current->links, $key, 0);
        $current->save();
}

注意:如果$current->links是嵌入式文档(对象)数组,则可能必须找到$key并检查是否以其他方式使用数组。