标签: yii

yii CActiveDataProvider具有限制和分页

我试图从表中选择几行并在多个页面中进行渲染(分页).这是模型中的代码:

   return new CActiveDataProvider('Downloads',
        array(
            'criteria' => array(
                'select' => 'download_id,title,thumb_ext',
                'order' => 'download_id DESC',
                'limit' => $count,
            ),
            'pagination' => array('pageSize' => 5,),
        )
    );
Run Code Online (Sandbox Code Playgroud)

在视图中,我使用CGridView显示它:

    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        'columns' => array('download_id', 'title', 'thumb_ext'),
    ));
Run Code Online (Sandbox Code Playgroud)

问题是CActiveDataProvider忽略条件限制并返回表的所有行...

谢谢.

mysql activerecord yii

9
推荐指数
2
解决办法
2万
查看次数

Yii框架可扩展性

我是yii框架的首发.我只是想知道Yii在很多时候对很多在线用户有多大的可扩展性?

与其他框架相比,Yii有多大用处,如果有100,000个用户 - 让事情顺利进行 - 需要什么样的技术和托管等?

php yii

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

在yii中排序CListView

请考虑一下:

class User extends CActiveRecord
{
    ...
    public function relations()
    {
        return array(
            ...    
            'articleCount' => array(self::STAT, 'Article', 'userid'),
            ...    
            );
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要创建一个$dataProvider = new CActiveDataProvider(...)to to to a CListViewwidget我想要添加articleCount到该属性,sortableAttributes以便我可以根据用户是作者的文章数量对User记录进行排序.

什么是最方便的方法?还有什么其他选择?

php yii

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

HowTo:调用方法:renderPartial() - 静态?

如何在Yii Framework中调用此方法:

$this->renderPartial(string $fileNameToRenderData, bool $wheaterToReturnOrEchoDirectly);
Run Code Online (Sandbox Code Playgroud)

静态地,像这样:

GodForbiddenClassName::renderPartial(string $fileNameToRenderData, bool $wheaterToReturnOrEchoDirectly);
Run Code Online (Sandbox Code Playgroud)

static call instance yii

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

如何在Yii Framework中设置基本URL

当我做

print_r(Yii::app()->request->baseUrl)
Run Code Online (Sandbox Code Playgroud)

我得到一个空字符串.Yii论坛上的帖子说默认为空白.如何更改其默认值以便我可以使用绝对URL?

php yii yii-routing

9
推荐指数
2
解决办法
7万
查看次数

Yii将过滤器添加到CGridView中的虚拟属性并使其可排序

我有以下型号:

User 列{id,user_name,password,user_type}

Admin 列{id,user_id,full_name,..... etc}

Editor 列{id,user_id,full_name,... etc}

关系是 User:'admin' => array(self::HAS_ONE, 'Admin', 'user_id'),'editor' => array(self::HAS_ONE, 'Editor', 'user_id'),

Admin : 'user' => array(self::BELONGS_TO, 'User', 'user_id'),

Editor : 'user' => array(self::BELONGS_TO, 'User', 'user_id'),

现在我fullNameUserModel中设置了一个虚拟属性,如下所示

public function getFullName()

{

    if($this->user_type=='admin')

        return $this->admin->full_name;

    else if($this->user_type=='editor')

        return $this->editor->full_name;


}
Run Code Online (Sandbox Code Playgroud)

我可以fullName在gridview中显示虚拟属性,但是如何在属性中添加过滤器并使其在gridview中可排序?

UPADTE 1:

我根据@Jon的答案更新了模型search()函数,如下所示

    public function search()
        {


            $criteria=new CDbCriteria;
            $criteria->select=array('*','COALESCE( editor.full_name,admin.first_name, \'\') AS calculatedName');
            $criteria->with=array('editor','admin');
            $criteria->compare('calculatedName',$this->calculatedName,true);
            $criteria->compare('email',$this->email,true);
            $criteria->compare('user_type',$this->user_type);

            return new CActiveDataProvider($this, array(
                'criteria'=>$criteria,


));
    } …
Run Code Online (Sandbox Code Playgroud)

php yii yii-components

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

将纯PHP项目迁移到Yii框架

我几乎完成了一个PHP项目,使用MVC,jQuery和Ajax.这是纯PHP项目.我不知道代码中的任何框架.我想改变这一点.我发现,进行一些研究,结果证明Yii是最好的框架之一.

有可能以某种方式将纯PHP项目迁移到Yii吗?

如果是这样,那该怎么办?我应该遵循哪些步骤来减少工作量并享受Yii框架带来的好处?

我是Yii新手,任何见解都很受欢迎.

php frameworks yii

9
推荐指数
2
解决办法
5763
查看次数

根据CGridView中的Column值更改行颜色

在Yii中,CGridView在行中有自己的背景颜色.但我想要做的是根据列之一的值突出显示特定行.

对于Instance,我有三列,id,name,status.现在,如果状态的值为Inactive或0,我应该用一些颜色突出显示该行.

我简要阅读了课程参考资料并搜索了这个网站.但找不到相关的解决方案.如果某些示例或某个方向朝向正确的解决方案,那将非常感激.

谢谢,Ujjwal

yii

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

Yii会话管理

我试图使用以下代码在Yii中设置一些会话变量:

    $session=new CHttpSession;
            $session->open() ;
            $session->setSessionName('My Session') ; 
            $session['sleep'] = 0 ;
            $session['attempts'] = 0 ;
            $session->writeSession('sleep','0') ; 
            $session['ip'] = $this->get_ip_address() ; $session->close() ;    var_dump($session,$session['ip']) ; 
Run Code Online (Sandbox Code Playgroud)

但是,我无法设置上面的会话变量,转储具有以下结果:

object(CHttpSession)#17 (5) { ["autoStart"]=> bool(true) ["behaviors"]=> array(0) { } ["_initialized":"CApplicationComponent":private]=> bool(false) ["_e":"CComponent":private]=> NULL ["_m":"CComponent":private]=> NULL } string(3) "::1" 
Run Code Online (Sandbox Code Playgroud)

它将$ session和$ session ['ip']视为两个完全不同的变量.有人可以帮我解决这个问题吗?

php session yii

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

如何在yii 2中使用搜索和过滤获取外键值而不是网格视图中的键?

我有两个staff带列的表id,nameattendance.staff_id用作attendance表中的外键.

我想在出勤gridview中显示员工姓名.

出勤模式:

public function getStaff()
{
        return $this->hasOne(Staff::className(), ['id' => 'staff_id']);
}

public function getStaffName() {
          return $this->staff->name;
}
Run Code Online (Sandbox Code Playgroud)

在index.php中我使用了这段代码

     <?= GridView::widget([
            [
             'attribute'=>'staff_id',
            'value'=>'StaffName',
            ],
]); ?>
Run Code Online (Sandbox Code Playgroud)

获得员工姓名的价值.通过这种方式,我成功获得了员工姓名但问题是,当我在gridview中搜索员工姓名时,它说"staff_id"应该是整数,因为我将其定义为整数,但在这里我想搜索员工的姓名而不是id .

这怎么可能 ?提前致谢

php gridview yii yii2

9
推荐指数
2
解决办法
6925
查看次数