Bonjour,

Je me lance depuis peu dans Symfony dans le but de développer une plateforme web permettant à ma mère de gérer les lectures de ses élèves. J'ai parcouru pas mal la documentation, et tente d'appliquer les différents concepts. J'en suis à la création de la base de données, et à l'utilisation des modèles générés. Voici mon problème, avec un schema simplifié :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
Book:
  tableName: book
  actAs:
    Timestampable: ~
  columns:
    serial: { type: string(20), notnull: true, unique: true }
 
Reader:
  tableName: reader
  actAs:
    Timestampable: ~
  columns:
    serial: { type: string(20), notnull: true, unique: true }
  relations:
    Books:
      class: Book
      refClass: BookReader
      local: id
      foreign: book_id
      foreignAlias: Readers
 
BookReader:
  tableName: book_reader
  actAs:
    Timestampable: ~
  options:
    symfony:    { form: false, filter: false }
  columns:
    book_id:    { type: integer, primary: true }
    reader_id:  { type: integer, primary: true }
  relations:
    Book:       { local: book_id, foreign: id, foreignAlias: BookReaders }
    Reader:     { local: reader_id, foreign: id, foreignAlias: BookReaders }
La génération via ./symfony doctrine:bla-bla génère bien l'ensemble des modèles, j'ai aussi chargé des données dans les tables, histoire de pouvoir tester ces modèles avant de rendre plus complexe ma BDD.

Là où je bloque, c'est que je souhaiterais récupérer, pour un livre identifié par son serial, tous les lecteurs. Selon ce que j'ai pu lire (mais j'ai surement mal compris un concept), lorsqu'on établi des relations dans le schema de la BDD, certaines fonctions sont générées automatiquement, c'est pourquoi, je pensais que le code suivant fonctionnerait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
    $q = Doctrine_Core::getTable('Book')
      ->createQuery('b')
      ->where('b.serial = ?', $this->serial);
    $book = $q->execute();
 
    $this->readers = $book->getReaders();
Vous vous en doutez, ça ne fonctionne pas, et j'ai l'erreur suivante (assez claire) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Fatal error: Call to undefined method Doctrine_Collection::getReaders() in [...]
Est-ce que cette fonction n'aurait pas du être générer, à la vue de la relation n-n entre ces deux tables ? C'est ce que j'attendais comme behavior lorsque j'ai lu cette idée dans l'introduction à Symfony (http://www.symfony-project.org/gentl...elated_records).

Merci d'avance pour votre aide !