Yii2 什么';ActiveDataProvider和SQLDataProvider之间的区别是什么?
我有点困惑。我想知道Yii2Yii2 什么';ActiveDataProvider和SQLDataProvider之间的区别是什么?,yii2,Yii2,我有点困惑。我想知道Yii2ActiveDataProvider和SQLDataProvider之间有什么区别?我在文档中查找它,但也找不到 有人能解释一下我什么时候应该用这个或那个吗?这两者有什么区别 谢谢您的时间。SqlDataProvider使用原始SQL语句,该语句用于获取所需数据,ActiveDataProvider可以使用yii\db\Query或yii\db\ActiveQuery对象 SqlDataProvider示例: $provider = new SqlDataProvid
ActiveDataProvider
和SQLDataProvider
之间有什么区别?我在文档中查找它,但也找不到
有人能解释一下我什么时候应该用这个或那个吗?这两者有什么区别
谢谢您的时间。
SqlDataProvider
使用原始SQL语句,该语句用于获取所需数据,ActiveDataProvider
可以使用yii\db\Query
或yii\db\ActiveQuery
对象
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',
],
],
]);
$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,
]
],
]);
ActiveDataProvider
示例:
$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',
],
],
]);
$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,
]
],
]);
SqlDataProvider
使用原始SQL语句,该语句用于获取所需数据,ActiveDataProvider
可以采用yii\db\Query
或yii\db\ActiveQuery
对象
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',
],
],
]);
$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,
]
],
]);
ActiveDataProvider
示例:
$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',
],
],
]);
$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,
]
],
]);
您能告诉我需要使用该
SqlDataProvider
的情况吗?当我们可以编写查询
(如第二个示例中所示)时,为什么我们需要编写原始SQL语句呢?SqlDataProvider可以在您有非常复杂的SQL查询时使用,当乞丐们不知道如何将查询转换为ActiveQuery
时,他们经常使用它。您能告诉我当我们需要使用SqlDataProvider
时的情况吗?当我们可以编写query
(如第二个示例)时,为什么我们需要编写原始SQL语句呢?SqlDataProvider
可以用于真正复杂的SQL查询,当乞丐不知道如何将查询转换为ActiveQuery
时,他们经常使用它。