4

私はsymfony1.4で開発しており、DoctrineORMを使用しています。スキーマとモデルを構築した後、データベースを操作するためのクラスがいくつかあります。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がコメントしたように、現在のオブジェクトまたはtrue/falseを返すと思います。

于 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();

symfony2プロジェクトのドクトリン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 に答える