独自の SQL で SELECT したい場合

$dbMap = Propel::getDatabaseMap( self::DATABASE_NAME );
$params = array();
$stmt = $con->prepare( "SELECT * FROM テーブル名 ORDER BY カラム名 DESC, カラム名 DESC;" );

BasePeer::populateStmtValues( $stmt, $params, $dbMap );
$stmt->execute();
$objects = self::populateObjects( $stmt );

データベースにテーブルを生成するための SQL の生成

$ php symfony propel:build --sql

テーブルのレコードをオブジェクトにマッピングする PHP クラスの生成

$ php symfony propel:build --model

Criteria

サンプル

public function executeIndex(sfWebRequest $request)
{
  $criteria = new Criteria();
  // 30日よりも古くない
  $criteria->add(JobeetJobPeer::CREATED_AT, time() - 86400 * 30, Criteria::GREATER_THAN);

  $this->jobeet_jobs = JobeetJobPeer::doSelect($criteria);
}

比較

  • Criteria::EQUAL
  • Criteria::NOT_EQUAL
  • Criteria::GREATER_THAN, Criteria::GREATER_EQUAL
  • Criteria::LESS_THAN, Criteria::LESS_EQUAL
  • Criteria::LIKE, Criteria::NOT_LIKE
  • Criteria::CUSTOM
  • Criteria::IN, Criteria::NOT_IN
  • Criteria::ISNULL, Criteria::ISNOTNULL
  • Criteria::CURRENT_DATE, Criteria::CURRENT_TIME, Criteria::CURRENT_TIMESTAMP

ソート

  • 昇順:Criteria.addAscendingOrderByColumn?()メソッド
  • 降順:Criteria.addDescendingOrderByColumn?()メソッド
crit.addAscendingOrderByColumn(EmpPeer.EMPID);
crit.addDescendingOrderByColumn(EmpPeer.EMPID);

ランダムに選択する場合

crit.addAscendingOrderByColumn( 'rand()' );

最大件数の設定

criteria.setOffset(1000);
criteria.setLimit(1000);

メモ

ArticlePeer::retrieveByPk(7);
ArticlePeer::retrieveByPks(array(123, 124, 125));

$c = new Criteria();
$c->add(UserPeer::ACCOUNT, 'hoge');
$articles = ArticlePeer::doSelect($c);

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-03-22 (木) 11:07:15 (2794d)