symfony / propel ile artan güncelleme

2 Cevap php

Ben Propel ORM kullanarak symfony bu gibi bir sorgu çalıştırmak istiyorum:

UPDATE ADS SET HITS=HITS+1 WHERE ID=10;

Ben Propel API bana belirli bir kaydın bir sütun için önceden sabit bir değer ayarlamasına izin biliyorum, ama ben kesinlikle eşzamanlı erişim vardır beri bir güncelleştirme sorgusu yayınlamadan önce ilk sütun değerini almak istemiyorum.

, Bunu nasıl elde edebiliriz lütfen?

Teşekkürler.

2 Cevap

Bu Symfony 1.3/1.4 çalışır:

AdsPeer in:

public static function incrementHits($id)
{
  $con = Propel::getConnection(AdsPeer::DATABASE_NAME);
  $query = 'UPDATE hits SET hits + 1 WHERE id = '.$id;
  sfContext::getInstance()->getLogger()->crit($query);
  $stmt = $con->prepare($query);
  $rs = $stmt->execute();
}

Kullanmak için:

AdsPeer::incrementHits($id);

HTH

Mikrofon

İsterseniz propel bir Select using SQL yapabilirsiniz.

İşte bir örnek:

class BookPeer extends BaseBookPeer {
  .
  .
  .
  /**
   * Get just the Books that have not been reviewed.
   * @return array Book[]
   */
  function getUnreviewedBooks() {
    $con = Propel::getConnection(DATABASE_NAME);

    // if not using a driver that supports sub-selects
    // you must do a cross join (left join w/ NULL)
    $sql = "SELECT books.* FROM books WHERE ".
           "NOT EXISTS (SELECT id FROM review WHERE book_id = book.id)";

    $stmt = $con->createStatement();
    $rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);

    return parent::populateObjects($rs);    
  }

Siz de update ile bu deneyebilirsiniz.