Find方法返回false,但我仍然可以使用delete方法Phalcon

时间:2018-06-26 08:13:43

标签: php phalcon

我正在测试使用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) {
      ....
    }
}

1 个答案:

答案 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();
    }