select("PARTIAL s.{id,name,type,description,createdAt,updatedAt,deletedAt}"); } protected function applyFromClause(QueryBuilder $queryBuilder) { $queryBuilder->from(SegmentEntity::class, 's'); } protected function applyGroup(QueryBuilder $queryBuilder, string $group) { if ($group === 'trash') { $queryBuilder->andWhere('s.deletedAt IS NOT NULL'); } else { $queryBuilder->andWhere('s.deletedAt IS NULL'); } } protected function applySearch(QueryBuilder $queryBuilder, string $search) { $search = Helpers::escapeSearch($search); $queryBuilder ->andWhere('s.name LIKE :search or s.description LIKE :search') ->setParameter('search', "%$search%"); } protected function applyFilters(QueryBuilder $queryBuilder, array $filters) { } protected function applyParameters(QueryBuilder $queryBuilder, array $parameters) { $queryBuilder ->andWhere('s.type IN (:type)') ->setParameter('type', [SegmentEntity::TYPE_DEFAULT, SegmentEntity::TYPE_WC_USERS, SegmentEntity::TYPE_WP_USERS]); } protected function applySorting(QueryBuilder $queryBuilder, string $sortBy, string $sortOrder) { if (!$sortBy) { $sortBy = self::DEFAULT_SORT_BY; } $queryBuilder->addOrderBy("s.$sortBy", $sortOrder); } }