Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Doctrine] Problem z prostym złączeniem.
m44
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 10
Dołączył: 16.11.2008

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


Korzystam z pluginu sfDoctrineGuardPlugin. Dodatkowo mam w bazie tabelę przechowującą teksty literackie użytkowników, powiązaną z sfGuardUser:

Kod
writing:
  actAs:
    Taggable: ~
    Timestampable: ~
    Sluggable:
      fields: [title]
      name: title_slug
      canUpdate: true
      unique: false
  columns:
    user_id:
      type: integer
    title:
      type: string(255)
    title_slug:
      type: string(255)
    content:
      type: clob
  relations:
    User:
      class: sfGuardUser
      type: one
      foreignType: many
      foreignAlias: Writings
      local: user_id
      foreign: id
      onDelete: CASCADE
  options:
    collate: utf8_unicode_ci
    charset: utf8
  indexes:
    writings_index:
      fields: [created_at, updated_at, title_slug]


Jeden użytkownik może być autorem wielu tekstów, a jeden tekst posiada jednego użytkownika (autora). Próbuję "dobrać się" do wszystkich tekstów użytkownika nie za pomocą zwykłego getWriters() w sfGuardUser, ponieważ zależy mi na istnieniu dodatkowej kolumny - nazwy użytkownika. W tym celu dopisałem metodę w sfGuardPlugin:

  1. class sfGuardUser extends PluginsfGuardUser
  2. {
  3. public function activation()
  4. {
  5. $this->setIsActive(1);
  6. $this->save();
  7.  
  8. return $this;
  9. }
  10.  
  11. public function getWritingsWithUsername()
  12. {
  13. if($this->exists())
  14. {
  15. return $this->getTable()->createQuery('u')
  16. ->innerJoin('u.Writings w ON w.user_id = ?', array($this->getId()))
  17. //->setHydrationMode(Doctrine::HYDRATE_NONE)
  18. ->execute();
  19. }
  20. return FALSE;
  21. }
  22. }


Niestety Doctrine zwraca mi zawsze tylko jeden rekord , pomimo że czysty SQL w konsoli PhpMyAdmin zwraca ich tyle, ile jest w bazie. Co ciekawe, jeśli wymuszę zachowanie na Doctrine::HYDRATE_NONE, to metoda użytkownika zwraca tyle rekordów co czysty SQL.

Czy ktoś wie dlaczego Doctrine zwraca tylko jeden rekord?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 07:25