cakephp-3.0 получить объект таблицы из объекта плагина с псевдонимом

У меня есть экземпляр Entity, и мне нужно получить его таблицу

Я делаю следующее, и в большинстве случаев это работает нормально:

$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', ...), но это не работает


person arilia    schedule 06.08.2015    source источник


Ответы (1)


Я бы посчитал это возможной ошибкой, так как это непоследовательное поведение, и то, что Entity::source() возвращает что-либо, кроме псевдонима реестра, не кажется слишком полезным.

Это происходит в \Cake\ORM\ResultSet::_groupResult(), где он использует псевдоним таблиц вместо псевдонима реестра, и, похоже, вы ничего не можете с этим поделать.

Пожалуйста, сообщите об этом на GitHub.

person ndm    schedule 06.08.2015