我有一个表结构如下:
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) 我有一个简单的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) 我试图进行查询以获取前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) 我正在使用CActiveDataProvider和CListView输出名称列表.我想只在名称与之前的名称相同时使用html粗体显示名称.这些不是数据库中的相同行,只有'name'属性是相同的.
例如,我想要以下内容:
Bob
Rick
Steve
Rick
Rick
George
由于我正在使用CListView,因此我使用来自$ data的信息创建我的部分视图,其中包含当前列表项.如何访问上一个列表项中的属性?
谢谢Yii世界老兵!
我是 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) 我创建了这个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?如何获得精确的页面?
yii ×5
php ×4
cgridview ×2
mysql ×2
pagination ×2
dataprovider ×1
listview ×1
partial ×1
yii2 ×1