使用关系订购dropDownList?

djt*_*djt 5 php yii yii-relations

我在Yii中有一些表单,使用以下内容以下拉形式从相关表中获取数据列表:

dropDownList(CHtml::listData(Company::model()->findAll(array('order' => 'company ASC'))));
Run Code Online (Sandbox Code Playgroud)

这是有效的,但这意味着每个下拉列表(很多)我都会把它array('order' => 'company ASC'放在每个下载列表中.

这是最好的方法吗?有没有办法使用模型关系()获取此数据,并指定关系中的顺序?

Jon*_*Jon 5

我相信这样做的正确方法是使用范围.

您可以定义任意数量的范围,这些范围对结果集进行排序并使用它们,如下所示:

Company::model()->scopeName()->findAll();
Run Code Online (Sandbox Code Playgroud)

如果您的应用程序始终要求按排序顺序提取公司,您甚至可以在模型类中定义默认范围:

public function defaultScope() {
    return array('order' => 'company ASC');
}
Run Code Online (Sandbox Code Playgroud)

这将导致每次调用Company::model()->findAll();返回排序结果.