2015-08-15 14 views
8

Benim modelim SSS ben Denetleyici'de Yii2 veya PHP kullanarak $ bölümün benzersiz bir değer dizisi nasıl alabilirim Yii2 - Tüm benzersiz model özellik değerlerini elde etmenin en iyi yolu nedir?

* @property integer $id * @property string $chapter * @property string $question * @property string $answer

Şu anda benim actionIndex fonksiyonu

public function actionIndex() 
{ 

    $faq = Faq::find()->all(); 

    $dataProvider = new ActiveDataProvider([ 
     'query' => Faq::find(), 
    ]); 

    return $this->render('index', [ 
     'dataProvider' => $dataProvider, 
     'faq' => $faq 
    ]); 
} 

benziyor 4 özelliklerini

sahiptir?

Faq::find()->select('chapter')->distinct()->all(); 

Eğer asArray() ekleyebilirsiniz yerine bir dizi içeren SSS modellerinin düz dizi olarak sonuç istiyorsanız: sql Diyelim o

SELECT DISTINCT chapter FROM ' faq_table'

cevap

14

gibi bu böyle yapılabilir görünüyor ->all()'dan önce.

Aşağıdaki kodu çalıştırarak, bu tam sorguyu üreteceğinizi gösterecektir.

Faq::find()->select('chapter')->distinct()->createCommand()->getSql(); 

Ekstra yorumu. Ayrıca, modelleri kullanmak istiyorsanız $faq = Faq::find()->all(); hattını kaldırmak ve $dataProvider->getModels()'u kullanmak daha iyi olur. Bu şekilde, verileri almak için sorgu iki kez çalışmaz.

+0

Çok yardımcı oldu, teşekkürler! –

+0

Bu sorgu bir dizi etkin kayıt döndürür. Bir diziyi sütun değerleriyle döndürmenin bir yolu var mı? '['chapter1', 'chapter2']' –

+3

Tamam, çözümü buluyorum: 'Faq :: find() -> select ('chapter') -> different() -> asArray() -> column(); ' –

İlgili konular