Расширение модели пользователя Pimcore
Pimcore не позволяет расширять модель пользователя напрямую. Вместо этого используется механизм создания связи между пользователем и одним или несколькими объектами Pimcore (Data Objects). Этот подход позволяет добавлять любую дополнительную информацию к профилю пользователя или связывать конкретные объекты системы с определенным пользователем.
В данном примере мы рассмотрим, как связать объект member с пользователем Pimcore.
На скриншотах показано, как этого можно достичь с помощью внутреннего интерфейса Pimcore. Внизу
также приведен пример того, как объекты user и member могут быть созданы и связаны
друг с другом программными средствами.
Независимо от способа создания пользователей, первым шагом необходимо определить класс (например, Member) в разделе Settings > Object > Classes (Настройки > Объекты > Классы).

В нашем примере класс member содержит три поля: location, name и user.
Класс может иметь произвольное количество свойств. Что важно в данном контексте,
тип данных User в коде соответствует классу \Pimcore\Model\DataObject\ClassDefinition\Data\User.
При создании объекта класса Member в поле user вы увидите выпадающий список (combo box), в котором можно выбрать любого из существующих пользователей Pimcore.

В этом примере был выбран пользователь "jondoe".
In the Settings > Users panel this relation is portrayed in the third tab of each
user which is called This user is referenced in the following objects:
В панели управления пользователями Settings > Users эта связь отображается на третьей вкладке каждого
пользователя, которая называется This user is referenced in the following objects:

Иногда пользователи и объекты создаются автоматически, например, при импорте данных. Ниже приведен пример кода на PHP, который создает нового пользователя, а затем создает объект Member и связывает его с этим пользователем.
use Pimcore\Model\User;
use Pimcore\Model\DataObject;
...
//создаём нового пользователя для Sydney
$user = User::create([
"parentId" => (int) $userGroup->getId(),
"username" => "sydney",
"password" => "password1234",
"hasCredentials" => true,
"active" => true
]);
...
//создаём объект member для пользователя Sydney
$object = new DataObject\Member();
$object->setCreationDate(time());
$object->setUserOwner($currentUser->getId());
$object->setUserModification($currentUser->getId());
$object->setPublished(true);
$object->setName("Sydney Subsidiary");
$object->setKey("member1234");
//выбираем пользователя, принадлежащего к этому объекту
$object->setUser($user->getId());
$object->setParentId($parentFolderId);
$object->save();
...
Помимо создания этих объектов, может потребоваться выяснить, какие объекты связаны с определенным пользователем. Существует удобный способ найти все объекты, связанные с конкретным пользователем:
$objects = \Pimcore\Model\DataObject\Service::getObjectsReferencingUser($userId);
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.