【发布时间】:2013-04-20 20:58:48
【问题描述】:
我在互联网上搜索了这个问题的一个很好的答案,但没有任何结果。我正在尝试删除另一个表中的多行,而不是从执行组件的位置。
基本上,当我在组件 A 中删除 4 行时,这些行也必须在组件 B 中删除。键存在于另一个表中,所以这不是问题。我可以通过一些快速而肮脏的 mysql 查询轻松地做到这一点,但我想用 Joomla 的内置方法来做到这一点。
在 joomla 中,从 JControllerAdmin 中使用 delete 方法,其中使用 getModel 抓取模型,然后执行另一个 delete 方法。但我似乎找不到这个删除方法实际删除行的位置。
顺便说一句,我已经从 JControllerAdmin 复制粘贴了删除方法并将其粘贴到我自己的控制器中。我确实更改了名称,但一切正常
所以现在我求助于 Stackoverflow 来解决我的问题。长话短说:我有一个 customDelete() 方法,它是 JControllerAdmin 类中删除方法的相同副本,我想添加允许我使用 customDelete() 方法中的 id 删除另一个表中的行的功能.
我希望这很清楚:)
谢谢!
编辑:
这是控制器中的删除方法。我必须从#__modeling(对应于组件B的表)中删除包含$cid内部id的所有行
public function customDelete() {
// Check for request forgeries
JSession::checkToken() or die(JText::_('JINVALID_TOKEN'));
// Get items to remove from the request.
$cid = JRequest::getVar('cid', array(), '', 'array');
if (!is_array($cid) || count($cid) < 1) {
JError::raiseWarning(500, JText::_($this->text_prefix . '_NO_ITEM_SELECTED'));
} else {
// Get the model.
$model = $this->getModel();
// Make sure the item ids are integers
jimport('joomla.utilities.arrayhelper');
JArrayHelper::toInteger($cid);
// Remove the items.
if ($model->delete($cid)) {
$this->setMessage(JText::plural($this->text_prefix . '_N_ITEMS_DELETED', count($cid)));
} else {
$this->setMessage($model->getError());
}
}
【问题讨论】:
-
你想从jtable中删除的表吗?您当然可以始终使用 jdatabasequery 来编写您需要的查询,但如果它是一个 jtable,您可以创建一个实例。