From 18df5ca2e14aa8311989ddebd5b1a6360306ed60 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Sun, 15 Sep 2024 09:53:44 +0300 Subject: [PATCH] user in team filter no distinct --- .../Where/ItemConverters/IsUserFromTeams.php | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/application/Espo/Core/Select/Where/ItemConverters/IsUserFromTeams.php b/application/Espo/Core/Select/Where/ItemConverters/IsUserFromTeams.php index c2b573bc93..1a0699bdf2 100644 --- a/application/Espo/Core/Select/Where/ItemConverters/IsUserFromTeams.php +++ b/application/Espo/Core/Select/Where/ItemConverters/IsUserFromTeams.php @@ -30,15 +30,17 @@ namespace Espo\Core\Select\Where\ItemConverters; use Espo\Core\Exceptions\BadRequest; -use Espo\Core\Select\Helpers\RandomStringGenerator; use Espo\Core\Select\Where\Item; use Espo\Core\Select\Where\ItemConverter; use Espo\Entities\Team; use Espo\Entities\User; use Espo\ORM\Defs; use Espo\ORM\Entity; +use Espo\ORM\Query\Part\Condition; +use Espo\ORM\Query\Part\Expression; use Espo\ORM\Query\Part\WhereClause; use Espo\ORM\Query\Part\WhereItem as WhereClauseItem; +use Espo\ORM\Query\SelectBuilder; use Espo\ORM\Query\SelectBuilder as QueryBuilder; /** @@ -49,7 +51,6 @@ class IsUserFromTeams implements ItemConverter public function __construct( private string $entityType, private Defs $ormDefs, - private RandomStringGenerator $randomStringGenerator ) {} public function convert(QueryBuilder $queryBuilder, Item $item): WhereClauseItem @@ -85,20 +86,14 @@ class IsUserFromTeams implements ItemConverter } if ($relationType === Entity::BELONGS_TO) { - $key = $defs->getKey(); - $aliasName = $link . 'IsUserFromTeamsFilter' . $this->randomStringGenerator->generate(); - - $queryBuilder->distinct(); - $queryBuilder->leftJoin( - Team::RELATIONSHIP_TEAM_USER, - $aliasName . 'Middle', - [ - "{$aliasName}Middle.userId:" => $key, - "{$aliasName}Middle.deleted" => false, - ] + return Condition::in( + Expression::column($defs->getKey()), + SelectBuilder::create() + ->from(Team::RELATIONSHIP_TEAM_USER, 'sq') + ->select('userId') + ->where(['teamId' => $value]) + ->build() ); - - return WhereClause::fromRaw(["{$aliasName}Middle.teamId" => $value]); } throw new BadRequest("Not supported link '$link' in where item.");