Php 如何在yii框架中自动获取任何表的primaryKey名称

Php 如何在yii框架中自动获取任何表的primaryKey名称,php,yii,Php,Yii,如何在yii framework中自动获取任何表的主键名称。我想在framework\gii\generators\model\templates\default\model.php中自动使用主键。 主键是XXX return new CActiveDataProvider($this, array( 'criteria'=>$criteria, 'sort'=>array( 'defaultOrder'=>' XXX DESC', ), )

如何在yii framework中自动获取任何表的主键名称。我想在framework\gii\generators\model\templates\default\model.php中自动使用主键。 主键是XXX

return new CActiveDataProvider($this, array(
    'criteria'=>$criteria,
     'sort'=>array(
     'defaultOrder'=>' XXX DESC',
    ),
));
对于gii,您可以使用:

$this->tableSchema->primaryKey;
或通常视情况而定:

$user = new User;
$user->tableSchema->primaryKey;
看看这个医生


我强烈建议在CActiveDataProvider中使用默认范围而不是默认顺序。主要原因是,即使在关联中使用,默认范围也允许对记录进行排序。 默认范围:

 public function defaultScope() {
        return array(
            'order' => $this->getTableAlias(false, false).'.'.$this->tableSchema->primaryKey.' DESC'
        );
    }
在本例中,我还使用了getTableAlias,因为它可以防止列名冲突。因此,只剩下更简单的数据提供程序:

return new CActiveDataProvider($this, array(
    'criteria'=>$criteria,
));
return new CActiveDataProvider($this, array(
    'criteria'=>$criteria,
));