cakephp-3.0从别名插件实体获取表对象

时间:2015-08-06 06:56:09

标签: php cakephp cakephp-3.0

我有一个实体的实例,我需要得到它的表

我做了以下工作,大部分时间都可以正常工作:

$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', ...),但它似乎无法正常工作

1 个答案:

答案 0 :(得分:1)

我认为这是一个可能的错误,因为它是不一致的行为,并且Entity::source()返回除注册表别名之外的任何内容似乎都没有过分用处。

它发生在\Cake\ORM\ResultSet::_groupResult()中,它使用表别名而不是其注册表别名,似乎没有任何关于它的事情。

report this over at GitHub