我在互联网上搜索了这个问题的一个很好的答案,但没有任何结果。我正在尝试删除另一个表中的多行,而不是从执行组件的位置。
基本上,当我在组件 A 中删除 4 行时,这些行也必须在组件 B 中删除。密钥存在于另一个表中,所以这不是问题。我可以通过一些快速而肮脏的 mysql 查询轻松地做到这一点,但我想用 Joomla 的内置方法来做到这一点。
在 joomla 中,从 JControllerAdmin 中使用删除方法,其中使用 getModel 获取模型,然后执行另一个删除方法。但我似乎找不到这个删除方法实际删除行的位置。
顺便说一句,我已经从 JControllerAdmin 复制粘贴了删除方法并将其粘贴到我自己的控制器中。我确实更改了名称,但一切正常
所以现在我求助于 Stackoverflow 来解决我的问题。长话短说:我有一个 customDelete() 方法,它是 JControllerAdmin 类中 delete 方法的相同副本,我想添加允许我使用 customDelete() 方法中的 id 删除另一个表中的行的功能.
我希望这很清楚:)
谢谢!
编辑:这是控制器中的删除方法。我必须从#__modeling
(与组件 B 对应的表)中删除所有包含 id 的行$cid
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());
}
}