国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - Yii中CGridView關(guān)聯(lián)表搜索排序方法實(shí)例詳解

Yii中CGridView關(guān)聯(lián)表搜索排序方法實(shí)例詳解

2020-08-20 11:52PHP教程網(wǎng) PHP教程

這篇文章主要介紹了Yii中CGridView關(guān)聯(lián)表搜索排序方法,以實(shí)例形式詳細(xì)分析了CGridView關(guān)聯(lián)表搜索排序的實(shí)現(xiàn)過(guò)程與搜索結(jié)果出現(xiàn)問(wèn)題的解決方法,是非常實(shí)用的技巧,需要的朋友可以參考下

本文實(shí)例講述了YiiCGridView關(guān)聯(lián)表搜索排序方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

在Yii CGridView 關(guān)聯(lián)表搜索排序?qū)崿F(xiàn)方法有點(diǎn)復(fù)雜,今天看了一老外寫(xiě)的了篇游戲,下面我整理一下與各位朋友分享一下,相信會(huì)對(duì)大家Yii框架的學(xué)習(xí)有所幫助。

首先,檢查你的blog demo里的protectedmodelsComment.php,確保Comment模型有一個(gè)search的方法,如果沒(méi)有,就用gii生成一個(gè),我下載到的blog demo里倒是沒(méi)有。

然后,寫(xiě)代碼的時(shí)間到了,我們從 CommentController 開(kāi)始,我們給它加一個(gè) actionList:

復(fù)制代碼 代碼如下:
public function actionList()
{
    $model=new Comment('search');
    $model->unsetAttributes();
    if(isset($_GET['Comment']))
        $model->attributes=$_GET['Comment'];
 
    $this->render('list',array(
        'model'=>$model,
    ));
}

 

著看起來(lái)沒(méi)什么了不起的,跟你用gii生成的crud代碼里的一樣。現(xiàn)在讓我來(lái)創(chuàng)建view,在 /protected/views/comment/ 目錄下創(chuàng)建list.php然后粘貼以下代碼

復(fù)制代碼 代碼如下:
<?php $this->breadcrumbs=array(
    'Comments',
);
?>
 
<h1>Manage Comments</h1>
 
<?php $this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns' => array(
                'content',
                'post.title',
                'status',
                'author'
        ),
));
?>

 

Comment List

這是一個(gè)基本的 CGridView 只顯示評(píng)論的‘content', ‘status' and ‘author', 和文章的標(biāo)題。我們假設(shè)想要往這張list里添加一列文章的標(biāo)題,我們只需要添加post.title 就行了:

復(fù)制代碼 代碼如下:
'columns'=>array(
    'content',
    'post.title',
    'status',
    'author',
),

 

現(xiàn)在如果你訪問(wèn)以下這個(gè)頁(yè)面,發(fā)現(xiàn)文章的標(biāo)題的確顯示出來(lái)了

Yii中CGridView關(guān)聯(lián)表搜索排序方法實(shí)例詳解

問(wèn)題:

如果你仔細(xì)瞅瞅這個(gè)頁(yè)面你會(huì)發(fā)現(xiàn)你無(wú)法搜索文章標(biāo)題,你也沒(méi)辦法按文章標(biāo)題排序,這是因?yàn)?CGridView 在給定的 column name 里面發(fā)現(xiàn)了一個(gè)‘.',也就是 post.title 的點(diǎn)。如果有點(diǎn)號(hào)的話,它就不會(huì)生成搜索框。

解決方案:

要想解決這個(gè)問(wèn)題,我們得費(fèi)點(diǎn)力氣。首先我們得給Commen模型添加一個(gè) getter 和一個(gè) setter ,比如說(shuō)這么寫(xiě):

復(fù)制代碼 代碼如下:
private $_postTitle = null;
public function getPostTitle()
{
    if ($this->_postTitle === null && $this->post !== null)
    {
        $this->_postTitle = $this->post->title;
    }
    return $this->_postTitle;
}
public function setPostTitle($value)
{
    $this->_postTitle = $value;
}

 

接下來(lái)將這個(gè)屬性添加到 rules 函數(shù)里:

復(fù)制代碼 代碼如下:
public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('content, author, email', 'required'),
        array('author, email, url', 'length', 'max'=>128),
        array('email','email'),
        array('url','url')
 
        array('content, postTitle, status, author', 'safe', 'on'=>'search'),
    );
}

 

這還不夠,最需要改動(dòng)的是我們的 search 函數(shù)。首先我們要添一個(gè) criteria:

復(fù)制代碼 代碼如下:
$criteria=new CDbCriteria;
$criteria->with = "post"; // 確保查詢 post 表
 
$criteria->compare('t.content',$this->content,true);
$criteria->compare('t.status',$this->status);
$criteria->compare('t.author',$this->author,true);
$criteria->compare('post.title', $this->postTitle,true);

 

然后我們添加排序:

復(fù)制代碼 代碼如下:
$sort = new CSort();
$sort->attributes = array(
    'defaultOrder'=>'t.create_time DESC',
    'content'=>array(
        'asc'=>'t.content',
        'desc'=>'t.content desc',
    ),
    'status'=>array(
        'asc'=>'t.status',
        'desc'=>'t.status desc',
    ),
    'author'=>array(
        'asc'=>'t.author',
        'desc'=>'t.author desc',
    ),
    'postTitle'=>array(
        'asc'=>'post.title',
        'desc'=>'post.title desc',
    ),
);

 

你也許注意到了我在使用完整的 ‘tablename'.'columnname'語(yǔ)法,我這么做的原因是為了避免 mysql 拋出‘column is ambigious error'。

為了保證這一切正常運(yùn)行,我們必須傳遞 CSort 實(shí)例和 CDbCriteria 實(shí)例給 CActiveDataProvider :

復(fù)制代碼 代碼如下:

return new CActiveDataProvider('Comment', array(
    'criteria'=>$criteria,
    'sort'=>$sort
));

 

return new CActiveDataProvider('Comment', array(
    'criteria'=>$criteria,
    'sort'=>$sort
));

 

現(xiàn)在我們要做的就是修改我們的 view 以便它在 CGridView 顯示想要顯示的屬性:

復(fù)制代碼 代碼如下:
'columns'=>array(
    'content',
    'postTitle',
    'status',
    'author',
),

 

刷新一下,應(yīng)該可以了,效果如下圖所示:

Yii中CGridView關(guān)聯(lián)表搜索排序方法實(shí)例詳解

希望本文所述對(duì)大家基于Yii框架的PHP程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
333
主站蜘蛛池模板: 色综合天天综合网国产成人网 | 久久久久久免费精品 | 91精品国产乱码久久久久久久久 | 亚洲精彩视频 | 色婷网| 狠狠干干干 | 日韩理伦片在线观看视频播放 | 中文字幕在线电影 | 国产区一区 | 午夜精品久久久久久久男人的天堂 | 精品国产乱码久久久久久影片 | 日本黄色大片免费看 | 亚洲成人三级 | 成人免费一区二区三区视频软件 | 综合色区| 国产午夜精品久久久久久久 | 欧美黄色一区二区三区 | 一区二区三区久久久久久 | 精品欧美乱码久久久久久1区2区 | 亚州国产精品视频 | 黄色在线不卡 | 亚洲一区亚洲二区 | 9191国产视频 | 香蕉久久夜色精品国产使用方法 | 欧美久久精品一级黑人c片 成人在线视频免费观看 | 农村人乱弄一区二区电影 | 精品一区二区三区在线观看 | 成人影音 | 国产精品尤物麻豆一区二区三区 | 精品国产仑片一区二区三区 | 精久久久 | 亚洲国产高清高潮精品美女 | 成人在线观看日韩 | 激情久久久久 | 欧美日韩国产在线 | 91亚洲国产成人久久精品网站 | 欧美日韩精品电影 | 精品国产欧美 | 夜夜操天天干 | 国产精品高潮呻吟久久av野狼 | 九九r热 |