ORM Propel incluyendo MAX en criterios
-
18-09-2019 - |
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?
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')