web-dev-qa-db-ja.com

CLI経由でデータベースのアイテムを削除する

CLIで「ゴミ箱」の状態のアイテムをいくつか削除したいと思います。 CLIからJTableの削除メソッドを呼び出すことは可能ですか?

ご協力いただきありがとうございます :-)

1
MyFault

私がこれをやったのは久しぶりですが、私が覚えているように、これをdoExecute内に置くとあなたが望むことをするはずです。

$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);
    }
}

あなたのケースでは、すでにゴミ箱にあるアイテム(state = -2)を削除していますが、実際には、そうでない限り、このコードは機能しません。ゴミ箱に入れられていないレコードを削除するには、->saveメソッドの前に->deleteメソッドを使用して、まずそれをゴミ箱に入れる必要があります。

$data = array('id' => $row->id,'state'=>'-2');
$result = $artmodel->save($data);
$result = $artmodel->delete($row->id);
4
GDP