2017-12-05 4 views
0

나는 약간 혼란 스럽다. Yii2 ActiveDataProviderSQLDataProvider의 차이점은 무엇입니까? 나는 그것을 위해 문서를보고 있었지만 그것을 얻을 수는 없었다.ActiveDataProvider와 SQLDataProvider의 차이점은 무엇입니까?

내가 다른 사람을 사용해야 할 때 누군가 나에게 설명해 줄 수 있습니까? 그리고 그것의 차이점은 무엇입니까?

감사합니다. 필요한 데이터를 가져 오기 위해 사용되며 ActiveDataProvider이 중 하나 yii\db\Query 또는 yii\db\ActiveQuery객체을 할 수있는 원시 SQL 문을

답변

3

SqlDataProvider 작품.

SqlDataProvider 예 :

$provider = new SqlDataProvider([ 
    'sql' => 'SELECT * FROM post WHERE status=:status', //HERE 
    'params' => [':status' => 1], 
    'totalCount' => $count, 
    'pagination' => [ 
     'pageSize' => 10, 
    ], 
    'sort' => [ 
     'attributes' => [ 
      'title', 
      'view_count', 
      'created_at', 
     ], 
    ], 
]); 

ActiveDataProvider 예 : 우리가 SqlDataProvider``것을 사용해야하는 경우에

$query = Post::find()->where(['status' => 1]);  // ActiveQuery here 

$provider = new ActiveDataProvider([ 
    'query' => $query,    // and here 
    'pagination' => [ 
     'pageSize' => 10, 
    ], 
    'sort' => [ 
     'defaultOrder' => [ 
      'created_at' => SORT_DESC, 
      'title' => SORT_ASC, 
     ] 
    ], 
]); 
+0

당신이 나에게 상황을 말씀해 주시겠습니까? 두 번째 예제에서와 같이'query '를 작성할 때 원시 SQL 문을 작성해야하는 이유는 무엇입니까? – HELPME

+1

'SqlDataProvider'는 ** 실제로 정말 ** 복잡한 SQL 쿼리가있을 때 사용할 수 있습니다. 질의를'ActiveQuery'로 변환하는 방법을 모른다면 종종 사용됩니다. – Yupik