Sıralama ve ben ilişkisel tablolar kullanarak bir yapı olduğunu, özel bir anahtar kelime arama oluşturmak sonra Sayfalandırması çalışmıyor

2 Cevap php

Geçenlerde Yii 1.1.x kullanarak özel bir anahtar kelime arama inşa etmeye başladı

Arama% 100 çalışıyor. Ama en kısa sürede ben sütunları sıralamak ve yönetici görünümünde sayfalamayı kullanmak gibi arama kaybolur ve tüm sonuçlar gösterilmiştir. Sadece arama sonuçları gösteriyor ki öylesine Başka türlü ifade ile bu filtreleme değil. Her nasılsa onu sıfırlar.

Aşağıdaki gibi benim denetleyicisi benim kod görünüyor

$builder=Messages::model()->getCommandBuilder();

        //Table1 Columns
        $columns1=array('0'=>'id','1'=>'to','2'=>'from','3'=>'message','4'=>'error_code','5'=>'date_send');

        //Table 2 Columns
        $columns2=array('0'=>'username');

        //building the Keywords
        $keywords = explode(' ',$_REQUEST['search']);
        $count=0;
        foreach($keywords as $key){
            $kw[$count]=$key;
            ++$count;
        }   

        $keywords=$kw;

        $condition1=$builder->createSearchCondition(Messages::model()->tableName(),$columns1,$keywords,$prefix='t.');
        $condition2=$builder->createSearchCondition(Users::model()->tableName(),$columns2,$keywords);
        $condition = substr($condition1,0,-1) . " OR ".substr($condition2,1);
        $condition = str_replace('AND','OR',$condition);


$dataProvider=new CActiveDataProvider('Messages', array(
                'pagination'=>array(
                    'pageSize'=>self::PAGE_SIZE,
                ),
                'criteria'=>array(
                    'with'=>'users',
                    'together'=>true,
                    'joinType'=>'LEFT JOIN',
                    'condition'=>$condition,
                ),

                'sort'=>$sort,
            ));

$this->render('admin',array(
            'dataProvider'=>$dataProvider,'keywords'=>implode(' ',$keywords),'sort'=>$sort
        ));

ve bence bu gibi görünüyor

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'id',
        array(
            'name'=>'user_id',
            'value'=>'CHtml::encode(Users::model()->getReseller($data->user_id))',
            'visible'=>Yii::app()->user->checkAccess('poweradministrator')
        ),
        'to',
        'from',
        'message',
        /*
        'date_send',
        */
        array(
            'name'=>'error_code',
            'value'=>'CHtml::encode($data->status($data->error_code))',
        ),
        array(
            'class'=>'CButtonColumn',
            'template'=>'{view} {delete}',
        ),


    ),

));

Ben gerçekten korkunç kayboldum beri artık ne yapacağız bilmiyorum, herhangi bir yardım hihsly takdir edilecektir

2 Cevap

Eğer arama kriterleri için bir kullanıcı durumunu ayarlamak ve devletin denetleyici görünümünüzü yükler her zaman test edebilir.

Çizgisinde bir şey

if(isset($_REQUEST['search'])){
    $keywords = explode(' ',$_REQUEST['search']);
    Yii::app()->user->setState('keywords',$keywords);
}
else if(Yii::app()->user->hasState('keywords')){
    $keywords=Yii::app()->user->getState('keywords');
}

Burada dezavantajı anahtar kelimeler devlet oturumun uzunluğu için muhafaza edilecektir olduğunu.

Ben bu çerçeveler gibi dont 'bu yüzden. Ham PHP Ben sadece $link=http_build_query($_GET); ile bunu yapmak istiyorum ve daha sonra sayfalama ve sıralama hem de bu linki kullanınız. Ama sizin çerçeve ideolojisini kullanarak aynı yapmak için bir yol bulmak zorunda. Ben böyle bir olağan görev için bazı örnek var bahis.