Mam wiele badań i jestem pewna, że odpowiedź brzmi nie, ale chciałbym udowodnić, że jest nie tak.Używanie REGEXP w Doctrine 2.x ORM
Chciałbym wykonać kwerendę napisane w DQL, który zawiera operację REGEXP. Na przykład:
select * from assets
where campaign_id = 1
and fileName REGEXP 'godzilla*'
order by fileName desc
aka
$builder->add('select', 'a.fileName')
->add('from', '\Company\Bundle\Entity\Asset a')
->add('where', 'a.campaign=1')
->...REGEXP MAGIC...
->add('orderBy', 'a.fileName desc');
(Jest to prosta regex i zdaję sobie sprawę, można zrobić jak się podoba, ale to tylko przykład - mój wyraz prawdziwy regex jest bardziej skomplikowane)
Zajrzałem do klasy Doctrine \ ORM \ Query \ Expr oraz klasy QueryBuilder. Nie widzę wsparcia dla REGEXP. Ktoś z SO ma post informujący, że użył klasy Expr, ale tak naprawdę nie działa (stwierdzili, że nie została przetestowana).
Każdy pomysł, jak wykonać REGEXP w DQL bez pisania kodu SQL? TIA.
Bad link na blogpost , czy nie jest już aktualny (doktryna 1)? –
@PetterSoderlund naprawiony –
Jedna rzecz do zapamiętania: musisz dodać operatora porównania na końcu REGEXP, inaczej Doctrine go odrzuci. Doctrine wymaga, aby wszystkie klauzule, w których klauzule mają operatora porównania, mimo że REGEXP tego nie wymaga – Patrick