我有一个实体的实例,我需要得到它的表
我做了以下工作,大部分时间都可以正常工作:
$className = $entity->source();
$entityTable = TableRegistry::get($className);
问题出现在别名的插件实体上:让我说我有一个Users
插件和一个Group
模型与此关系
//plugins/Users/src/Model/Table/GroupsTable
$this->belongsTo('Parents', [
'className' => 'Users.Groups',
'foreignKey' => 'parent_id'
]);
现在在控制器中我做了类似的事情:
$groupsTable = TableRegistry::get('Users.Groups');
$group = $groupsTable->get($some_id, ['contain' => 'Parents']);
$className = $group->parent->source();
现在$className
包含'Parents'
,而我期待'Users.Parents'
如何获取以插件名称为前缀的类名?我试过了$this->belongsTo('Users.Parents', ...)
,但它似乎无法正常工作
答案 0 :(得分:1)
我认为这是一个可能的错误,因为它是不一致的行为,并且Entity::source()
返回除注册表别名之外的任何内容似乎都没有过分用处。
它发生在\Cake\ORM\ResultSet::_groupResult()
中,它使用表别名而不是其注册表别名,似乎没有任何关于它的事情。