4

我正在使用 symfony 1.4 开发并使用 Doctrine ORM。在构建模式和模型之后,我有了一些用于数据库的类。我也可以使用 Doctrine_query .... 唯一我无法理解的是:

我需要更新表。

Doctrine_Query::create()->update('table')->.....->execute().

或者

$tbl = new Table();
$tbl->assignIdentifier($id);
if($tbl->load()){
    $tbl->setFieldname('value');
    $tbl->save();
}

我如何理解查询是否成功?以及更新了多少行。

ps同样的问题是删除操作。

4

3 回答 3

10

一切都在更新删除的文档中。

执行 DQL UPDATE 和 DELETE 查询时,查询的执行会返回受影响的行数。

查看示例:

$q = Doctrine_Query::create()
        ->update('Account')
        ->set('amount', 'amount + 200')
        ->where('id > 200');

$rows = $q->execute();

echo $rows;
$q = Doctrine_Query::create()
        ->delete('Account a')
        ->where('a.id > 3');

$rows = $q->execute();

echo $rows;

这与 DQL 相关(当您使用原则查询时)。但我认为->save()将返回当前对象或 @PLB 评论的真/假。

于 2012-07-24T09:20:58.060 回答
5
$statement = $this->entityManager->getConnection()->prepare($sql);
$statement->execute();

// the counter of rows which are updated
$counter = $statement->rowCount();

它非常适合我在 symfony 2 项目中的学说 2

于 2017-04-04T07:36:53.760 回答
1
$nrRows = $this->getEntityManager()->getConnection()->executeUpdate('UPDATE ...');

executeUpdate的文档:

  /**
     * Executes an SQL INSERT/UPDATE/DELETE query with the given parameters
     * and returns the number of affected rows.
     *
     * This method supports PDO binding types as well as DBAL mapping types.
     *
     * @param string         $query  The SQL query.
     * @param mixed[]        $params The query parameters.
     * @param int[]|string[] $types  The parameter types.
     *
     * @return int The number of affected rows.
     *
     * @throws DBALException
     */
    public function executeUpdate($query, array $params = [], array $types = [])
于 2019-09-13T12:12:51.393 回答