Yii2 - 获取所有独特模型属性值的最佳方法是什么?

st.*_*imp 8 php sql arrays activerecord yii2

我的模型FAQ有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
    ]);
}
Run Code Online (Sandbox Code Playgroud)

如何在Controller中使用Yii2或PHP获取$ chapter的唯一值数组?让我们说在sql看起来像

SELECT DISTINCT chapter FROM ' faq_table'

jag*_*ler 14

这可以这样做:

Faq::find()->select('chapter')->distinct()->all();
Run Code Online (Sandbox Code Playgroud)

如果您希望将结果作为普通数组而不是包含Faq模型的数组,则可以在asArray()之前添加->all().

运行下面的代码将显示它将生成这个确切的查询.

Faq::find()->select('chapter')->distinct()->createCommand()->getSql();
Run Code Online (Sandbox Code Playgroud)

额外评论.我还认为如果你想使用这些模型,最好删除该行$faq = Faq::find()->all();并使用$dataProvider->getModels()它.这样,获取数据的查询不会运行两次.

  • 好的,我找到了解决方案:`Faq :: find() - > select('chapter') - > distinct() - > asArray() - > column();` (3认同)