Theo tiêu đề, làm cách nào để khớp với một biểu thức chính quy với trình tạo truy vấn Doctrine 2? Về cơ bản tôi đang cố gắng để tạo ra sên độc đáo.Regex với trình tạo truy vấn Doctrine 2?
Đây là triển khai hiện tại của tôi. Tôi tạo ra con sên. Sau đó tôi kiểm tra xem có bất kỳ sên nào được sử dụng như cái sên này không. Nếu có, tôi sẽ nối thêm một - {number} vào cuối slug nơi {number} là số thấp nhất chưa được sử dụng.
$qb->select(array('partial o.{id, slug}'))
->from('Foo\Bar\Entity\Object', 'o')
->where($qb->expr()->like('o.slug', ':slug'));
$slug = new SlugNormalizer($text);
$qb->setParameter('slug', $slug->__toString().'-%');
Vấn đề ở đây là LIKE slug% có thể khớp với foo-bar-1, foo-bar-2 và foo-bar-not-the-slug. Những gì sẽ được sạch hơn là một regex tìm kiếm REGEX slug - (\ d +) hoặc một cái gì đó tương tự.
Bất kỳ cách nào để thực hiện việc này với trình tạo truy vấn Doctrine 2?
này không hoạt động. Lớp Doctrine \ ORM \ Query \ Expr \ Compar chỉ có các toán tử sau: const EQ = '='; const NEQ = '<>'; const LT = '<'; const LTE = '<='; const GT = '>'; const GTE = '> ='; Không có tùy chọn NO REGEXP! Cộng với nó không phải là một hoạt động so sánh ... tại sao nó lại sống ở vị trí số 1? –
Bạn nói đúng, nó không hoạt động. Nhưng đó là một hoạt động so sánh. Hai toán hạng, một toán tử giữa chúng, đối với tôi nó là so sánh. – Maxence
Ah, khi bạn tuyên bố nó như thế, có thể bạn đã đúng. Có thể là một op so sánh .. bất kể, heh, nó không hoạt động. = [ –