推动ORM包括MAX标准

时间:2009-12-08 17:50:33

标签: propel

我正在使用Propel ORM编写查询

查询格式为:

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

我到目前为止:

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

任何人都知道如何使用Propel来保存我编写RAW SQL吗?

4 个答案:

答案 0 :(得分:3)

如果你想知道如何添加自定义WHERE值,那么@prodigitalson的解决方案应该可行,但我想知道为什么你这样做的方式与第一位相反:

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

...它将为您提供最新创建的记录。

答案 1 :(得分:1)

尝试:

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

答案 2 :(得分:1)

这种方式没有提到 - 所以这对我有用:

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

find()返回一个对象集合,因此请使用findOne()

addAsColumn()仅返回选定的列。

答案 3 :(得分:0)

我无法获得 - > withColumn(' MAX(itemrevisionID)')工作,所以解决这个问题 - > orderByitemrevisionID(' desc' )