문제

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.')');

Raw SQL을 쓰기 위해 Propel을 사용하는 방법을 알고 있습니까?

도움이 되었습니까?

해결책

노력하다:

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

다른 팁

당신이 사용자 정의를 추가하는 방법을 알고 싶다면 WHERE 값, @prodigitalson의 솔루션이 작동해야하지만 왜 먼저 이런 식으로 수행하는지 궁금합니다.

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

... 최신 레코드를 얻을 수 있습니다.

이 방법은 언급되지 않았으므로 이것은 나에게 효과적입니다.

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

찾기 () 객체 모음을 반환하므로 findone ()를 사용하십시오.

AddAscolumn ()은 선택한 열만 리턴합니다.

나는 withcolumn ( 'max (itemrevisionid)')를 얻을 수 없어서 일을 할 수 없었기 때문에 주변의 작업은 이것 -> OrderByitemRevisionId ( 'desc')였습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top