Skip to content

Instantly share code, notes, and snippets.

@dnahrebecki
Created May 5, 2017 22:22
Show Gist options
  • Save dnahrebecki/614db4d5e56bc88be8d3f16fcf3d78a8 to your computer and use it in GitHub Desktop.
Save dnahrebecki/614db4d5e56bc88be8d3f16fcf3d78a8 to your computer and use it in GitHub Desktop.
Query Extended Entities
<?php
var_dump($extendedEntities);
array (size=2)
0 =>
array (size=3)
'id' => int 1
'label' => string 'ex_label_1' (length=10)
'serialized_data' => null
1 =>
array (size=3)
'id' => int 2
'label' => string 'ex_label_2' (length=10)
'serialized_data' => null
var_dump($userEntities);
array (size=1)
0 =>
array (size=3)
'firstName' => string 'Daniel' (length=6)
'lastName' => string 'Nah' (length=3)
'label' => string 'ex_label_1' (length=10)
<?php
// ****************** PLEASE READ *******************
// STR:
// 1. Create ExtendedEntity with field 'label'.
// 2. Add new field to User entity. Field name: "extend"
// 3. Update schema
// 4. Create 2 records in DB (table: oro_ext_extendedentity). 1;ex_label_1 and 2;ex_label_2
// 5. Go to System -> User management -> Users
// 6. Edit one of user and assign 'ex_label_1' to new field User::extend. Save record
// 7. Run following code in UserController
// Can be run in any controller (eg.UserController) to check if works
// fetch extended entity from repository
$doctrineHelper = $this->get('oro_entity.doctrine_helper');
$repository = $doctrineHelper->getEntityRepositoryForClass(ExtendHelper::ENTITY_NAMESPACE . 'ExtendedEntity');
$queryBuilder = $repository->createQueryBuilder('e');
$extendedEntities = $queryBuilder->where(
$queryBuilder->expr()->like(
'e.label',
$queryBuilder->expr()->literal('ex_label%')
)
)->getQuery()->getArrayResult();
// fetch users with 'extend' field set to ex_label_1 (join to ExtendedEntity class)
$userRepository = $doctrineHelper->getEntityRepositoryForClass(User::class);
$userQueryBuilder = $userRepository->createQueryBuilder('u');
$userEntities = $userQueryBuilder
->select(['u.firstName', 'u.lastName','e.label'])
->join('u.extend', 'e')
->where(
$queryBuilder->expr()->like(
'e.label',
$queryBuilder->expr()->literal('ex_label%')
)
)
->getQuery()->getArrayResult();
var_dump($extendedEntities, $userEntities);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment