В некоторых случаях 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