使用 YiiMongoDbSuite 删除数组元素


Remove array element with YiiMongoDbSuite

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

这就是渲染部分的样子:

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

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

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

问题出在array_slice部分。如 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并检查是否以其他方式在数组中。