Je voudrais supprimer certains éléments avec l'état "mis à la corbeille" via CLI. Est-il possible d'appeler la méthode delete de JTable à partir de la CLI?
Merci de votre aide :-)
Cela fait longtemps que je n’ai pas fait cela, mais si je me souviens bien, mettre ceci dans doExecute devrait faire ce que vous voulez.
$basePath = JPATH_ADMINISTRATOR.'/components/com_content';
require_once $basePath.'/models/article.php';
$artmodel = new ContentModelArticle(array('table_path' => $basePath.'/tables'));
$db = JFactory::getDbo();
$q = "SELECT * FROM #__content WHERE `state` = '-2'";
$db->setQuery($q);
if( $rows = $db->loadObjectList() ) {
foreach($rows as $row){
$this->out('Removing '.$row->title);
$result = $artmodel->delete($row->id);
}
}
Dans votre cas, vous supprimez des éléments déjà mis à la corbeille (état = -2), mais pour l'enregistrement, ce code ne fonctionnera pas, à moins que ce ne soit le cas. Pour supprimer un enregistrement qui n'est PAS mis à la corbeille, vous devez d'abord le jeter à l'aide de la commande ->save
méthode antérieure à la ->delete
méthode:
$data = array('id' => $row->id,'state'=>'-2');
$result = $artmodel->save($data);
$result = $artmodel->delete($row->id);