显示推进是否成功删除了相关数据

时间:2017-09-21 10:45:03

标签: php sql propel

我有类似的东西

    $table = TableQuery::create()
     ->findOneByTableId(1);
    foreach($table->getSomeTables() as $item) { // SomeTable is a table linked with foreign-key
     $table->removeSomeTable($item);
    }
    if($table->save()) {
     echo "success";
    }else {
     echo "fail";
    }

这里的问题是,尽管$ table有someTablesScheduledForDeletion并且在调用方法save()时成功将其从数据库中删除,但save仍然返回0,好像" 0记录被更改",尽管有些记录是实际上删了。 如果我以与someTables

类似的方式附加更多内容,同样如此

我想要实现的目的是获取成功删除这些元素的信息

2 个答案:

答案 0 :(得分:0)

您应该在->delete()上致电$item,然后按预期使用->isDeleted()

例如:

$table = TableQuery::create()->findOneByTableId(1);
$deleted = 0;
foreach ($table->getSomeTables() as $item) {
    $item->delete();
    if ($item->isDeleted()) {
        $deleted++;
    }
}
if ($deleted > 0) {
    echo "Rows deleted.";
} else {
    echo "No rows deleted.";
}

答案 1 :(得分:-1)

发出另一个查询可能很有用。是否有理由避免这种情况?