2009-12-08 5 views
4

내가 추진 ORM추진 ORM

쿼리의 형식이다 사용하여 쿼리 작성 중 :

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

누구나 알고 :이 지금까지 가지고

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

을 RAW SQL을 쓰는 나를 구하기 위해 Propel을 사용하여이 작업을 수행하는 방법?

답변

1

시도 :

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

사용자 정의 WHERE 값을 추가하는 방법을 알고 싶어 jhust 경우 처음 대에서이 방법을 수행하는 이유를 다음 @prodigitalson에 의해 솔루션이 작동해야하지만 궁금 그냥 :

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

... 가장 최근에 생성 된 레코드를 가져옵니다. 작업> withColumn ('MAX (itemrevisionID)'), 그래서 해결책은이이었다 - -을

+0

덕분에 도움이되었습니다. 또한 특정 열의 MAX 값을 얻으려고했지만 메서드가 멋지게 작동합니다. 간단히 해당 열 desc 및 findone 주문하십시오. 다시 한번 감사드립니다. – azzy81

+0

그래. 앞서 말했듯이 비즈니스 문제에 대한 가능한 대안과 MAX() 만 사용하는 방법에 대해 언급하고 싶습니다. – jakerella

0

내가 얻을 수있는이 방법은 언급되지

0

> orderByitemrevisionID ('내림차순') - 그래서이 작품을 나를 위해 :

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

발견() 개체의 컬렉션을 반환합니다 그래서() 단지 선택된 열을 반환 findOne()

addAsColumn를 사용합니다.

관련 문제