4

我有一些代码应该从嵌入式 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));

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

任何帮助将不胜感激,谢谢。

4

1 回答 1

1

问题在于array_slice部分。正如php 文档中指定的数组切片不修改数组参数。

使用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其他方式查找并检查是否在数组中。

于 2013-10-11T07:08:12.060 回答