Query.php クラスで php スイッチを使用して基準を作成できます (質問は単純化された例を示しているため、基準に必要なスイッチはより複雑になる場合があります)。
//in YourModelQuery.php
public function addMyItemPositionCriteria($itemPosition) {
//TODO: validate $itemPosition values as needed
switch ($itemPosition) {
case 1:
return $this->add([$criteria see http://api.propelorm.org/1.6.8/ browse propel.runtime.query Criteria and ModelCriteria classes ]);
break;
case 2:
return $this->add([$criteria here]);
break;
}
}
または、ModelPeer.php クラス (または関数呼び出しのないアクション クラス) で $criteria オブジェクトを同様に構築できます。
// in MyObjectPeerClass.php
public static function addMyItemPositionCriteria($itemPosition) {
//TODO: validate $itemPosition values as needed
$criteria = new Criteria;
switch ($itemPosition) {
case 1:
return $criteria->add([$criteria see http://api.propelorm.org/1.6.8/ browse propel.runtime.query Criteria and ModelCriteria classes ]);
break;
case 2:
return $criteria->add([$criteria here]);
break;
}
}
次に、この基準を使用できます。
//depending on context
// in ModelQuery.php call
$this->addMyItemPostion($itemPosition);
// call to model query
ModelQuery::create()->addMyItemPosition($itemPosition)->find();
//in action or somewhere else (adding to previously defined $criteria)
$new_criteria = MyObjectPeerClass::addMyItemPosition($itemPosition);
$criteria->add($new_criteria);