문제
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')였습니다.
제휴하지 않습니다 StackOverflow