我有一些代码应该从嵌入的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通信并传递数据,或者我的代码是否从数据库中删除数据是正确的。
非常感谢任何帮助,谢谢。
答案 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
并检查是否以其他方式使用数组。