Метод Find возвращает false, но я все еще могу использовать метод удаления Phalcon - PullRequest
0 голосов
/ 26 июня 2018

Я тестировал способ удаления записей / объектов с помощью 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 делает в документации .

$robot = Robots::find();

if ($robot !== false) {
    if ($robot->delete() === false) {
      ....
    }
}

1 Ответ

0 голосов
/ 26 июня 2018

Я предлагаю обновить вашу библиотеку 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();
    }
...