我想在我的FE-Ext中提供'恢复'已删除对象的功能。看来,它没有找到任何删除的记录,所以我无法更新它们设置deleted = 0。
你要从控制器那里处理什么?:
$query->getQuerySettings()->setIgnoreEnableFields(TRUE);
$query->getQuerySettings()->setIncludeDeleted(TRUE);
谢谢。
答案 0 :(得分:1)
我不太确定“来自控制器”是什么意思。通常,您在存储库中实现它,只需从控制器调用该方法。
在你的回购中:
public function findRecordEvenIfItIsDeleted($uid) {
$query = $this->createQuery();
$settings = $query->getQuerySettings();
settings->setIgnoreEnableFields(TRUE);
settings->setIncludeDeleted(TRUE);
$query->matching($query->equals('uid', $uid));
return $query->execute();
}
在您的控制器中:
$myObject = $this->myRepsository->findRecordEvenIfItIsDeleted($uid);
完成。 (当然你的存储pid必须设置(或者也禁用尊重存储页面)
答案 1 :(得分:0)
您正在添加不会抛出任何错误,因为您要将querySettings设置为包含已删除的记录。但也许,即使在更新时也必须启用此设置,因为存储库应找到您要更新的对象。 我没有测试过,但试一试。
在您的存储库中(只是一个伪代码)
public function update($modifiedObject) {
settings->setIncludeDeleted(TRUE);
parent::update($modifiedObject);
}
答案 2 :(得分:0)
我知道很久以前就问过这个问题,但今天我遇到了一个与隐藏物体类似的问题。我的解决方案就是这个:
将此添加到您的模型(在您的情况下,将“隐藏”替换为“已删除”):
/**
* @var boolean
*/
protected $hidden;
/**
* @return boolean $hidden
*/
public function getHidden() {
return $this->hidden;
}
/**
* @return boolean $hidden
*/
public function isHidden() {
return $this->getHidden();
}
/**
* @param boolean $hidden
* @return void
*/
public function setHidden($hidden) {
$this->hidden = $hidden;
}
存储库中的添加此功能以查找已删除/隐藏的对象:
public function findHiddenByUid($uid) {
$query = $this->createQuery();
$query->getQuerySettings()->setIgnoreEnableFields(TRUE);
$query->getQuerySettings()->setEnableFieldsToBeIgnored(array('disabled','hidden'));
return $query
->matching($query->equals('uid', $uid))
->execute()
->getFirst();
}
现在在您的控制器中,您可以阅读该对象,设置“隐藏”选项并进行更新:
$yourobject = $this->yourobjectRepository->findHiddenByUid($uid);
$yourobject->setHidden(1);
$this->yourobjectRepository->update($yourobject);
对你的任务可能没有意义,但对其他人来说: 在我的情况下,我还有一个问题是将表单中的隐藏对象发布到操作。请注意,如果您想通过表单发布对象,则首先将对象删除/隐藏选项设置为0更好(或可能是必要的)。