Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] doUpdate i Criteria::IN
XvZOK
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.07.2007

Ostrzeżenie: (0%)
-----


Chciałbym korzystając z Propela/Criteria wykonać:

  1. UPDATE tabela SET kolumna=1 WHERE pk IN (1,2,34,...)


próbowałem zarówno:

  1. <?php
  2. $c1=new Criteria();
  3. $c1->add(TabelaPeer::PK,$ids,Criteria::IN);
  4. $c2=new Criteria();
  5. $c2->add(TabelaPeer::KOLUMNA,1);
  6. BasePeer::doUpdate($c1,$c2,Propel::getConnection());
  7. ?>


jak i z uzyciem TabelaPeer::doUpdate
Niestety wywala się twierdząc że nie może przekonwertować obiektu Tabela na integer.

Googlowałem z godzine ale bezskutecznie.

Jeśli się nie da przez Propel/Criteria to może jakiś inny sposób na masowy UPDATE z kompaktybilnością na wiele baz.
Go to the top of the page
+Quote Post
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


w Symfony 1.2 można zrobić to tak:
  1. <?php
  2. $con = Propel::getConnection();
  3. $stmt = $con->prepare('UPDATE tabela SET kolumna=1 WHERE pk IN (:id) ');
  4.            $stmt->bindValue(':id', '1,2,3,4,5', PDO::PARAM_STR);
  5.            $stmt->execute();
  6. ?>
Go to the top of the page
+Quote Post
arecki
post
Post #3





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

Ostrzeżenie: (0%)
-----


Cytat(XvZOK @ 10.03.2009, 19:10:10 ) *
Chciałbym korzystając z Propela/Criteria wykonać:

  1. UPDATE tabela SET kolumna=1 WHERE pk IN (1,2,34,...)


próbowałem zarówno:

  1. <?php
  2. $c1=new Criteria();
  3. $c1->add(TabelaPeer::PK,$ids,Criteria::IN);
  4. $c2=new Criteria();
  5. $c2->add(TabelaPeer::KOLUMNA,1);
  6. BasePeer::doUpdate($c1,$c2,Propel::getConnection());
  7. ?>


No to nie jesteś sam. Kiedyś też szukałem i sam patrząc po źródłach symfony wykombinowałem. Sprawdź czy zadziała Ci coś takiego:
  1. <?php
  2. $c1=new Criteria();
  3. $c1->add(TabelaPeer::PK,$ids,Criteria::IN);
  4. $c1->add(TabelaPeer::KOLUMNA,1);
  5. TabelaPeer::doUpdate($c1);
  6. ?>


Ten post edytował arecki 10.03.2009, 21:09:49
Go to the top of the page
+Quote Post
Lonas
post
Post #4





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


  1. <?php
  2. $con = Propel::getConnection();
  3.    
  4.    $c1 = new Criteria();
  5.    $c1->add(PhotoPeer::PHOTO_ID, $photo_id);
  6.    
  7.    // update set
  8.    $c2 = new Criteria();
  9.    $c2->add(PhotoPeer::COUNTER, COUNTER+1);
  10.    
  11.    BasePeer::doUpdate($c1, $c2, $con);
  12. ?>


Ten post edytował Lonas 11.03.2009, 07:32:38
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 23:42