标签: cactivedataprovider

MySql Pivot表到Yii CActiveDataProvider

我有一个表结构如下:

CREATE TABLE IF NOT EXISTS `CustomValue` (
  `id` int(11) NOT NULL,
  `customFieldId` int(11) NOT NULL,
  `relatedId` int(11) NOT NULL,
  `fieldValue` text COLLATE utf8_unicode_ci,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `CustomField` (
  `id` int(11) NOT NULL,
  `customTypeId` int(11) NOT NULL,
  `fieldName` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
  `relatedTable` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
  `defaultValue` text COLLATE utf8_unicode_ci,
  `sortOrder` int(11) NOT NULL DEFAULT '0',
  `enabled` char(1) COLLATE utf8_unicode_ci DEFAULT '1',
  `listItemTag` …
Run Code Online (Sandbox Code Playgroud)

php mysql yii cactivedataprovider cgridview

8
推荐指数
1
解决办法
309
查看次数

Yii分页显示的项目少于可用项目

我有一个简单的CGridView,它来自CActiveDataProvider.目前,我不确定这种情况发生了多长时间,它没有显示启用了pagenation的视图中的所有数据项.

我的标题显示"显示9个结果中的1-7个",但没有更多页面的按钮.如果我将数据提供程序的pagenation属性的pageSize设置为较小的数字,我最终将获得分页按钮,但它似乎在第一页上显示的项目少于第二页.例如,如果我将CActiveDataProvider的pageSize设置为3,我会得到2,2,3(每页上的项目),而不是我预期的3,3,1.

如果我将pageSize设置为9到11之间的任何值,那么有些项目我看不到,因为我只有一页而不是所有项目都显示出来(如果我将pageSize设置为9,则"1-6 of 9").

$criteria=new CDbCriteria;
$criteria->with = array('registrations'); 
$criteria->addCondition('registrations.id IS NOT NULL');
$criteria->addCondition('registered = false');
$criteria->together = true;
$dataProvider = new CActiveDataProvider('Skier', array('criteria'=>$criteria));

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        array('name'=>'fullname', 'header'=>'Name'),
        array(
            'name'=>'programs_names',
            'header'=>'Programs',
            'value'=>'$data->programs_names',
        ),
        <More items here>
    )
));
Run Code Online (Sandbox Code Playgroud)

任何人都知道什么会导致pagenation如此不稳定?

编辑:此外,将CActiveDataProvider更改为CArrayDataProvider正常工作,我得到9个结果中的9个.这将暂时起作用,因为我有小数据集,但我宁愿弄清楚问题可能是什么.

$dataProvider = new CArrayDataProvider(Skier::model()->findAll($criteria));
Run Code Online (Sandbox Code Playgroud)

php pagination yii cactivedataprovider cgridview

6
推荐指数
1
解决办法
2149
查看次数

如何限制ActiveDataProvider的查询?

我试图进行查询以获取前10条记录,并将其传递给ActiveDataProvider.

查询工作正常,只返回所需数量的记录,而ActiveDataProvider打印所有记录,这是我的代码:

    $query = new \yii\db\Query;
    $query->select('*')
            ->from('customers')
            ->limit(10);
    $query->createCommand();

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
Run Code Online (Sandbox Code Playgroud)

mysql cactivedataprovider yii2

3
推荐指数
1
解决办法
1202
查看次数

Yii从CListView部分中访问以前的数据项

我正在使用CActiveDataProvider和CListView输出名称列表.我想只在名称与之前的名称相同时使用html粗体显示名称.这些不是数据库中的相同行,只有'name'属性是相同的.

例如,我想要以下内容:
Bob
Rick
Steve
Rick
Rick
George

由于我正在使用CListView,因此我使用来自$ data的信息创建我的部分视图,其中包含当前列表项.如何访问上一个列表项中的属性?

谢谢Yii世界老兵!

php listview partial yii cactivedataprovider

2
推荐指数
1
解决办法
588
查看次数

找不到 Yii 类 CActiveDataProvider

我是 Yii 的新手,在运行小部件时出现此错误“未找到类 'app\controllers\CActiveDataProvider'”。

这是我的代码:

模型/industrial.php:

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Industrial extends ActiveRecord
{
}
Run Code Online (Sandbox Code Playgroud)

控制器/工业控制器.php:

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\industrial;


class IndustrialController extends Controller
{


    public function actionIndex()
    {
        $dataProvider=new CActiveDataProvider('Industrial', array(

    'pagination'=>array(
        'pageSize'=>20,
    ),
));
        $query = industrial::find();

        $pagination = new Pagination([
            'defaultPageSize' => 20,
            'totalCount' => $query->count(),
        ]);

        $industrials = $query->orderBy('Company_Name')
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();




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



}
}
Run Code Online (Sandbox Code Playgroud)

意见/工业/index.php:

<?php
use yii\helpers\Html; …
Run Code Online (Sandbox Code Playgroud)

php yii dataprovider cactivedataprovider

2
推荐指数
1
解决办法
5100
查看次数

如何使用Yii的CActiveDataProvider设置当前页面?

我创建了这个CActiveDataProvider:

  $dataProvider=new CActiveDataProvider('Post',array(
    'criteria'=>array(
      'condition'=>$condition,
      'params'=>$params,
    ),
    'pagination'=>array(
      'pageSize'=>2,
    ),
  ));
Run Code Online (Sandbox Code Playgroud)

但是......如何定义当前页面和加载记录3,4而不是1,2?如何获得精确的页面?

pagination yii cactivedataprovider

1
推荐指数
1
解决办法
6061
查看次数