2017-12-05 8 views
0

私は少し混乱しています。私はYii2 ActiveDataProviderSQLDataProviderの違いは何ですか?私はそれについてのドキュメントを見ていたが、それを得ることもできなかった。ActiveDataProviderとSQLDataProviderの違いは何ですか?

誰かがいつ私を説明すればいいですか?そしてそれの違いは何ですか?

ありがとうございます。必要なデータをフェッチするとActiveDataProvideryii\db\Queryyii\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

あなたは私の状況を教えてもらえますか? 2番目の例のように、 'クエリ'を書くことができるときに、生のSQL文を書く必要があるのはなぜですか? – HELPME

+1

'SqlDataProvider'は**本当に**複雑なSQLクエリーを持っているときに使用できます。クエリーを' ActiveQuery'に変換する方法がわからないときは、しばしば初心者が使います。 – Yupik

関連する問題