Альтернативные способы получить Table-instance в доктрине - PullRequest
1 голос
/ 06 сентября 2010

В некоторых случаях Doctrine_Core::getTable('%Name%') возвращается Doctrine_Table экземпляр вместо %Name%Table один. Это, конечно, ошибка, но есть ли другие способы получения экземпляров Table в доктрине, кроме Doctrine_Core::getTable('%Name%')?

Чтобы продемонстрировать это неправильное поведение: вот схема небольшой проблемы. система слежения

User:
  actAs: [Timestampable]
  tableName: issue_user
  columns:
    user_id:        { type: integer, primary: true, autoincrement: true }
    user_name:      { type: string(255) }
    user_role:      { type: enum, values: [worker, dispatcher, manager] }
    managed_by:     { type: integer }
    password:       { type: string(32) }
    salt:           { type: string(32) }
  relations:
    Manager:
      foreignAlias: Workers
      class: User
      local: managed_by
      foreign: user_id
      type: one
      foreignType: many

Issue:
  actAs: [Timestampable]
  columns:
    issue_id:        { type: integer, primary: true, autoincrement: true }
    from_ceh:        { type: string(255) }
    from_name:       { type: string(255) }
    from_phone:      { type: string(255) }
    from_location:   { type: string(255) }
    comp_name:       { type: string(255) }
    comp_serial:     { type: string(255) }
    comp_os:         { type: enum, values: [Win95, Win98, WinNT, WinME, Win2000, WinXP, Vista, Win7] }
    issue_title:     { type: string(255) }
    comment:         { type: string(255) }
    owner_id:        { type: integer }
    is_executed:     { type: bool }
  relations:
    Owner:
      onDelete: CASCADE
      foreignAlias: Issues
      class: User
      local: owner_id
      foreign: user_id
      type: one
      foreignType: many

Когда я просто звоню Doctrine_Core::getTable('User'), он возвращает UserTable экземпляр, но если я позвоню после такого запроса:

Doctrine_Query::create()
        ->select('u.user_id, ws.user_id, i.*')
        ->from('User u, u.Workers ws, ws.Issues i')
        ->where('u.user_id=', $manager_id)
        ->fetchArray();

звонит Doctrine_Core::getTable('User') возвращает Doctrine_Table Экземпляр

P.S. Доктрина 1.2.3

1 Ответ

0 голосов
/ 07 сентября 2010

Последняя версия доктрины 1.2 (которая звучит так, как будто вы используете, поддерживает XxxTable :: getInstance (), хотя все, что она делает, это вызывает Doctrine :: getTable ('Xxx');

...