2012-08-29 3 views

답변

0

난 정수 값의 경우에 사용 이것

$max = Yii::app()->db 
      ->createCommand("SELECT MAX(TableCol) FROM tableName") 
      ->where('cond1=:cond1', array(':cond1'=>$cond1)) 
      ->andWhere('cond2=:cond2', array(':cond2'=>$cond2)) 
      ->queryScalar(); 

OR

제가

dateTime을하는 경우에 사용이 사례
$maxAnsTime = Yii::app()->db 
    ->createCommand("SELECT tableColumn FROM tableName ORDER BY tableColumn DESC LIMIT 1") 
    ->where('cond1=:cond1', array(':cond1'=>$cond1)) 
    ->queryRow(); 

$ maxible는 최대 결과를 줄 것입니다.

bind 매개 변수를 사용하여 createCommand에 where 절을 넣을 수도 있습니다.

또한 yii 활성 레코드가 더 큰 데이터 세트에 사용 된 것 중 가장 좋지 않은 것으로 나타났습니다.

0

당신은 WHERE 절해야하는 경우 : 컨트롤러에서

:

$max = $model->getMax($filter); 

모델에서 :

public $maxColumn = 0; 
public function getMax($filter = null) 
{ 
    /* Get max in column1 WHERE column2 = $filter */ 
    $criteria    = new CDbCriteria; 
    $criteria->select  = 'MAX(t.column1) as maxColumn'; 
    $criteria->condition = 't.column2 LIKE :parm'; 
    $criteria->params  = array(':parm'=>$filter); 

    $tempmodel = $this->find($criteria); 
    $max  = $tempmodel['maxColumn']; 
    return $max; 
} 
6

이 불필요한 임시 개체 생성 방지 :

$criteria = new CDbCriteria; 
$criteria->select = 'max(column)'; 
// additional where conditions, if you so wish 
$criteria->addColumnCondition(array('published' => 1)); 
$model = SomeModel::model(); 
$value = $model->commandBuilder->createFindCommand(
    $model->tableName(), $criteria)->queryScalar(); 
0

을 너 내가 할 수있어. 예를 들어 DESC에 의한 결과와 순서를 모방한다.

$criteria = new CDbCriteria; 
$criteria->order = 'column DESC'; 
$row = Model::model()->find($criteria); 
$somevariable = $row->column; 
0

이것은 그 것이다.

function getMaxId($modelName){ 
    $criteria = new CDbCriteria; 
    $criteria->order = 'id DESC'; 
    $model = $modelName::model()->find($criteria); 
    return $model->id; 
} 
관련 문제