Doctrine2: Consultas polimórficas: búsqueda de propiedades de subclases

Tengo un proyecto donde trato con pedidos de clientes. Algunos de esos pedidos se realizan a través de Amazon.com. Entonces tengo una entidad Order, y una entidad AmazonOrder que la extiende. Una cosa agregada por AmazonOrder es el AmazonOrderId.

Tengo el requisito de implementar una función de búsqueda amplia. El usuario puede ingresar algunas cosas en un cuadro de texto y ser utilizado en un montón de expresiones en una gran cláusula where. Entonces, por ejemplo, si el usuario buscó "111", los resultados incluyen cualquier pedido con una ID que comience con 111, cualquier pedido enviado a códigos postales que comiencen con 111, cualquier pedido enviado a "111 Main St", etc. .

Eso se implementa con una consulta creada por el generador de consultas que tiene una granorX() expresión

Ahora, me gustaría comparar con todas las Órdenes, pero si son un AmazonOrder, también coinciden con AmazonOrderId.

Y estoy atascado, sospecho que puede no ser posible

Así es como estoy construyendo la consulta:

$qb->select('o,s')->from('PMS\Entity\Order', 'o');    
$qb->leftJoin('o.shippingInfo','s');
$qb->andWhere('o.status = :status');
$qb->setParameter('status',$status);
$qb->andWhere(
    $qb->expr()->orX(
        $qb->expr()->like('o.id',':query')
        $qb->expr()->like('s.address',':query')
        $qb->expr()->like('s.city',':query')
    )
);
$qb->setParameter('query',$userQuery .'%');

$orders = $qb->getQuery()->getResult();

Y no puedo encontrar la manera de agregar una condición que diga, más o menos, "O (El pedido es un AmazonOrder Y AmazonOrderId LIKE '$ userQuery%')"

¿Alguien tiene alguna idea? ¿Alguna forma de manejar esto, o al menos una confirmación de que no es factible de esta manera?

Respuestas a la pregunta(2)

Su respuesta a la pregunta