【问题标题】:yii : how to get all records of tableyii : 如何获取表的所有记录
【发布时间】:2012-10-24 23:10:21
【问题描述】:

Q:如何获取表的所有记录?

状态:我想导出表的所有记录。现在,我可以导出表的前 10 条记录。我该怎么办?

这是我的模特

public function dashboard()
    {
        // Warning: Please modify the following code to remove attributes that
        // should not be searched.

        $criteria=new CDbCriteria;
        $criteria->select = 't.*';

        if (Yii::app()->user->checkAccess('Reviewer') || Yii::app()->user->checkAccess('Implementer'))
            $criteria->join   = "JOIN users u ON (t.creator = u.id)";
            if($this->creator):
                $criteria->compare('u.username',$this->creator);
            else:
                if (Yii::app()->user->checkAccess('Creator')):
                    $criteria->compare('t.creator',Yii::app()->user->id);           
            endif;
        endif;

        $criteria->compare('t.request_no',$this->request_no);       
        $criteria->compare('t.description',$this->description,'true');

        if(isset($this->status)):
            $criteria->addSearchCondition('t.status',$this->status, false);
        endif;      

        if (Yii::app()->user->checkAccess('Reviewer')):
            $criteria->addSearchCondition('t.reviewers',Yii::app()->user->id,true, 'OR');
        endif;

        if (Yii::app()->user->checkAccess('Implementer')):
            $criteria->addSearchCondition('t.implementers',Yii::app()->user->id,true, 'OR');
        endif;

        //$criteria->order = ' created_date DESC';

        $all = new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));


        $_SESSION['all'] = $all;


        $data = new CActiveDataProvider(get_class($this), array(
            'pagination'=>array('pageSize'=> Yii::app()->user->getState('pageSize',
                                    Yii::app()->params['defaultPageSize']),),
            'criteria'=>$criteria,
        ));

        $_SESSION['limited'] = $data; // get all data and filtered data :)

        return $data;   
    }

感谢您的建议

【问题讨论】:

    标签: php yii


    【解决方案1】:

    在 Yii2 中,以下仍然有效。

        // query
        $queryMessages = Messages::find()->where([
            'user_id' => Yii::$app->user->identity->patient->id,
        ]);
    
        // data provider
        $messagesDataProvider = new ActiveDataProvider([
            'query' => $queryMessages,
            'pagination' => false,
        ]);
    

    【讨论】:

    • 您的答案是通过 user_id 检索数据。这不是我需要的。自 2012 年以来,我已经找到了解决方案。请检查我的答案。
    【解决方案2】:

    我找到了解决办法。

    $all = new CActiveDataProvider(get_class($this), array(
                'criteria'=>$criteria,
            ));
    

    get_class($this)是解决这个问题的关键。

    【讨论】:

      【解决方案3】:

      您必须为 dataprovider 设置禁用分页。对于那组pagination 属性为假

      $all = new CActiveDataProvider($this, array(
                  'criteria'=>$criteria,
                  'pagination'=>false,
              ));
      

      【讨论】:

      • 谢谢,它为我代言!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2018-03-27
      相关资源
      最近更新 更多