2009-12-31 20 views

Odpowiedz

4

Nie można utworzyć kwerendy związkowej za pomocą kryteriów. Zamiast tego możesz create the SQL string yourself i użyć go do uwadniania obiektów. Jeśli nadal chcesz używać Kryteriów do budowania obu części zapytania związkowego, możesz zadzwonić pod numer BasePeer::createSelectSql(Criteria $criteria, array &$params). Spowoduje to zwrócenie ciągu znaków SQL z ? w miejscach wartości, które muszą zostać ustawione przez warstwę PDO. Drugi parametr jest tablicą, która zostanie wypełniona tymi parametrami (dlatego przekazujesz ją przez odniesienie). Możesz przekazać to do funkcji PDOStatement::execute(array $params).

+0

Czy możesz zaktualizować link? Nie działa –

+0

@NeelBasu: Link przekazał mi nowy adres, zaktualizowałem go. –

+0

Łącze jest zepsute ponownie (ponieważ wiki jest zepsute), ale tekst [nadal można znaleźć tutaj] (http://trac.propelorm.org/browser/branches/1.4/docs/guide/03-Basic-CRUD. tekst). [Wersja obecnego wydania (1.6) znajduje się tutaj] (http://trac.propelorm.org/browser/branches/1.6/docs/guide/03-Basic-CRUD.txt). – Ladadadada

1

Dwa rozwiązania przychodzą na myśl. Po pierwsze, trywialnym podejściem jest uruchomienie dwóch oddzielnych wywołań, a następnie użycie array_merge, aby skleić je ze sobą. W zależności od twojego przypadku użycia może to nie być tak drogie, jak ci się wydaje.

Ponadto, jeśli utkniesz podczas pisania zapytania, napisz widok z żądanym zapytaniem, a następnie umieść go w swoim modelu Propel. Miałem masę bardzo skomplikowanych ekranów szczegółów mistrzowskich w Propel/symfony 1.x, a to podejście działało na wiele przyjemności. To idzie nieco przeciwko filozofii używania ORM, ale hej, fajnie jest łamać zasady raz na jakiś czas! :)