Symfony1 在Symfony 1.4中使用推进

Symfony1 在Symfony 1.4中使用推进,symfony1,propel,Symfony1,Propel,我必须按玩家Id返回该行,如果没有行,则创建一行。 这不是最好的办法 class PlayerRafPeer extends BasePlayerRafPeer { /** * Returns a PlayerRaf object by playerId. * @param int $player_id * @param PDO $con * @return PlayerRaf */ public static function retrieveByPl

我必须按玩家Id返回该行,如果没有行,则创建一行。 这不是最好的办法

class PlayerRafPeer extends BasePlayerRafPeer {

  /**
   * Returns a PlayerRaf object by playerId. 
   * @param int $player_id
   * @param PDO $con
   * @return PlayerRaf
   */
  public static function retrieveByPlayerId($player_id, $con = null)
  {
    if ($con === null) {
      $con = Propel::getConnection(self::DATABASE_NAME);
    }

    $criteria = new Criteria();
    $criteria->add(self::PLAYER_ID, $player_id);
    $v = self::doSelectOne($criteria, $con);

    if (!$v) {
        $player = new PlayerRaf();
        $player->setPlayerId($player_id)
             ->setEmailCount(0)
             ->setDate(date("Y-m-d"), time());
        self::doInsert($player, $con);
        return $player;
    } 
    return $v;
  }

您应该避免在对等类中添加逻辑,而是使用ActiveQueryAPI。你可以阅读:和

在您的情况下,此部分将帮助您:

然后,你可以写:

<?php

$player = PlayerRafQuery::create()
            ->filterById($id)
            ->findOneOrCreate();

您应该避免在对等类中添加逻辑,而是使用ActiveQueryAPI。你可以阅读:和

在您的情况下,此部分将帮助您:

然后,你可以写:

<?php

$player = PlayerRafQuery::create()
            ->filterById($id)
            ->findOneOrCreate();