Pregunta

Estoy escribiendo una consulta mediante el ORM Propel

La consulta es de la forma:

select * from some_table where some_table.created_at = (SELECT MAX(some_table.created_at) from some_table);

Tengo este momento:

 $c = new Criteria();
 $c->addSelectColumn('MAX('.self::CREATED_AT.')');

Cualquier persona sabe cómo usar Propel para hacer esto, que me salve la escritura RAW SQL?

¿Fue útil?

Solución

Probar:

$c = new Criteria();
$c->add(SomeTable::CREATED_AT, '(SELECT MAX('.SomeTable::CREATED_AT.') FROM some_table)', Criteria::CUSTOM);

Otros consejos

Si jhust quieren saber cómo agregar valores personalizados WHERE, entonces la solución por @prodigitalson debería funcionar, pero me pregunto por qué están haciendo de esta manera en el primer lugar frente a sólo:

$recs = SomeTableQuery::create()->orderByCreatedAt()->findOne();

... que te llevará el último registro creado.

De esta manera no se menciona - por lo que este funciona para mí:

MyTable::create() 
->select('max_id') 
->addAsColumn('max_id', 'MAX(id)')
->findOne();

find () devuelve una colección de objetos para usar findOne ()

addAsColumn () devuelve sólo la columna seleccionada.

No pude conseguir -> withColumn ( 'MAX (itemrevisionID)') para trabajar, por lo que el trabajo en torno a esta era -> orderByitemrevisionID ( 'desc')

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top