currently only tested with sqlite but should be ready for comments.
add the following to your repository class:
use Infrastructure\ORM\Repository\Traits;
class ExampleSubjectRepository extends ServiceEntityRepository
{
use Traits\JsonPlatformDbal;
now you can use the following in your repository methods:
$segment = 'example_search';
$queryBuilder = $this->createQueryBuilder('s');
$queryBuilder
->where('s.sequence = :sequence')
->setParameter('sequence', $sequence)
;
$this->andWhereJson($queryBuilder, 'number', 'segment', $segment);
$result = $queryBuilder->getQuery()->getOneOrNullResult();
where this
$this->andWhereJson($queryBuilder, 'number', 'segment', $segment);
translates to the following on sqlite
->where("JSON_EXTRACT(s.number, '$.segment') = 'search_query'")
->setParameter(':search_query', $searchQuery) //$searchQuery contains $segment which contains `example_search`
and to the following on postgresql
->where("JSON_EXTRACT(s.number, 'segment') = 'example_search'")
->setParameter(':search_query', $searchQuery) //$searchQuery contains $segment which contains `example_search`