2015-08-15 17 views
8

mô hình FAQ tôi có 4 thuộc tínhYii2 - Cách tốt nhất để có được tất cả các giá trị thuộc tính mô hình duy nhất là gì?

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

Ngay bây giờ chức năng actionIndex của tôi trông giống như

public function actionIndex() 
{ 

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

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

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

Làm thế nào tôi có thể nhận được một mảng các giá trị độc đáo của $ chương sử dụng Yii2 hoặc PHP trong điều khiển? Cho phép nói trong sql nó trông giống như

SELECT DISTINCT chapter FROM ' faq_table'

Trả lời

14

Điều này có thể được thực hiện như thế này:

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

Nếu bạn muốn kết quả như là một mảng đơn giản thay vì một mảng chứa mô hình Faq bạn có thể thêm asArray() trước ->all().

Chạy mã bên dưới sẽ cho bạn thấy nó sẽ tạo truy vấn chính xác này.

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

thêm nhận xét. Tôi cũng nghĩ tốt hơn là xóa dòng $faq = Faq::find()->all(); và sử dụng $dataProvider->getModels() nếu bạn muốn sử dụng các kiểu máy. Bằng cách này, truy vấn tìm nạp dữ liệu không chạy hai lần.

+0

Nó đã giúp, cảm ơn rất nhiều! –

+0

Truy vấn này trả về một mảng các bản ghi hoạt động. Có tồn tại một cách để trả về một mảng với các giá trị cột không? '['chapter1', 'chapter2']' –

+3

Ok, tôi tìm ra giải pháp: 'Faq :: find() -> select ('chapter') -> distinct() -> asArray() -> column(); ' –

Các vấn đề liên quan