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
]);
}
как я могу получить массив уникальных значений $chapter с помощью Yii2 или PHP в контроллере? Скажем, в sql это выглядит как
SELECT DISTINCT chapter FROM ' faq_table'
1 ответов
это можно сделать так:
Faq::find()->select('chapter')->distinct()->all();
если вы хотите получить результаты в виде простого массива вместо массива, содержащего модели Faq, вы можете добавить asArray()
до ->all()
.
запуск кода ниже покажет вам, что он будет производить этот точный запрос.
Faq::find()->select('chapter')->distinct()->createCommand()->getSql();
дополнительные комментарии. Я также думаю, что лучше удалить строку $faq = Faq::find()->all();
и использовать $dataProvider->getModels()
если вы хотите использовать модели. Таким образом, запрос на получение данных не выполняется дважды.