Yii Active Record를 사용하여 데이터베이스에서 한 열의 최대 값을 찾는 방법은 무엇입니까?Yii 활성 레코드를 사용하여 최대 한 개의 열 찾기
나는 순수한 SQL과 createCommand
방법으로 그것을 할 수 있지만, Active Record와 CDbCriteria
class.is에서 그것을 할 방법이 있습니까?
Yii Active Record를 사용하여 데이터베이스에서 한 열의 최대 값을 찾는 방법은 무엇입니까?Yii 활성 레코드를 사용하여 최대 한 개의 열 찾기
나는 순수한 SQL과 createCommand
방법으로 그것을 할 수 있지만, Active Record와 CDbCriteria
class.is에서 그것을 할 방법이 있습니까?
다음과 같이 선택 기준을 변경해야합니다.
$model = new Model;
$criteria=new CDbCriteria;
$criteria->select='max(column) AS maxColumn';
$row = $model->model()->find($criteria);
$somevariable = $row['maxColumn'];
참조 :
난 정수 값의 경우에 사용 이것
$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 활성 레코드가 더 큰 데이터 세트에 사용 된 것 중 가장 좋지 않은 것으로 나타났습니다.
당신은 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;
}
이 불필요한 임시 개체 생성 방지 :
$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();
을 너 내가 할 수있어. 예를 들어 DESC에 의한 결과와 순서를 모방한다.
$criteria = new CDbCriteria;
$criteria->order = 'column DESC';
$row = Model::model()->find($criteria);
$somevariable = $row->column;
이것은 그 것이다.
function getMaxId($modelName){
$criteria = new CDbCriteria;
$criteria->order = 'id DESC';
$model = $modelName::model()->find($criteria);
return $model->id;
}