我正在测试使用Phalcon(3.1.1)删除记录/对象的方法,我想知道为什么当Phalcon\Mvc\Model::find()
方法返回false时,下面的代码没有提供错误消息。
$someObjectIDs[] = 0;
// Find related objects by ids
$ObjectsToRemove = FooBar::find([
'id NOT IN ('.implode(', ', $someObjectIDs).')'
]);
// Delete
$ObjectsToRemove->delete();
如果我愚蠢地使用Phalcon\Mvc\Model::delete()
方法的结果,那么如果Phalcon\Mvc\Model::find()
方法返回false的话,这也是正确的。为什么Phalcon在删除它们之前总是总是先检查文档中的Phalcon\Mvc\Model::find()
方法的结果?
这就是Phalcon在documentation中所做的。
$robot = Robots::find();
if ($robot !== false) {
if ($robot->delete() === false) {
....
}
}
答案 0 :(得分:1)
我建议将您的Phalcon库更新为最新版本。
在最近的发行版中,find方法将返回Phalcon\Mvc\Model\Resultset\Simple
的实例,您可以在其中使用count()
或valid()
方法来验证找到的记录数。
示例:
/** @var \Phalcon\Mvc\Model\Resultset\Simple $instance */
$instance = \MyModel::find([
'conditions' => 'id IN (:ids:)',
'bind' => [
'ids' => implode([2, 3, 4, 5])
],
]);
if($instance->valid()){
$instance->delete();
}