我的模型常见问题解答有4个属性
* @property integer $id
* @property string $chapter
* @property string $question
* @property string $answer
现在我的actionIndex函数看起来像
public function actionIndex()
{
$faq = Faq::find()->all();
$dataProvider = new ActiveDataProvider([
'query' => Faq::find(),
]);
return $this->render('index', [
'dataProvider' => $dataProvider,
'faq' => $faq
]);
}
如何在Controller中使用Yii2或PHP获取$ chapter的唯一值数组?让我们在sql中说它看起来像
SELECT DISTINCT chapter FROM ' faq_table'
答案 0 :(得分:14)
这可以这样做:
Faq::find()->select('chapter')->distinct()->all();
如果您希望结果为普通数组而不是包含常规模型的数组,则可以在asArray()
之前添加->all()
。
运行下面的代码会显示它会生成这个确切的查询。
Faq::find()->select('chapter')->distinct()->createCommand()->getSql();
额外评论。我还认为,如果要使用模型,最好删除行$faq = Faq::find()->all();
并使用$dataProvider->getModels()
。这样,获取数据的查询不会运行两次。