Yii CGridView 使用关系表排序和搜索

标签 yii

我的数据库中有 3 个表,

图片如下,我已关注 http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/

获得具有搜索和排序目的的最终网格。所以我在 search() 中连接了 2 个表功能如

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

      $criteria=new CDbCriteria;

                $criteria->with = array( 'bposite' );
                $criteria->together = false;
                $criteria->with = array( 'client' );
      $criteria->compare('id',$this->id);
//        $criteria->compare('client_id',$this->client_id);
//        $criteria->compare('bposite_id',$this->bposite_id);
      $criteria->compare('userid',$this->userid,true);
      $criteria->compare('password',$this->password,true);
                $criteria->compare( 'bposite.name', $this->bposite_search, true );                
                $criteria->compare( 'client.name', $this->client_search, true );


      return new CActiveDataProvider($this, array(
          'criteria'=>$criteria,
                            'sort'=>array(
                                'attributes'=>array(
                                    'client_search'=>array(
                                        'asc'=>'client.name',
                                        'desc'=>'client.name DESC',
                                    ),
                                    'bposite_search'=>array(
                                        'asc'=>'bposite.name',
                                        'desc'=>'bposite.name DESC',
                                    ),
                                    '*',
                                ),
                            ),
      ));
  }
}


但是我得到了客户的结果,bposite 搜索和排序显示了类似的问题
>     Error 500: <h1>CDbException</h1>
>     <p>CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bposite.name'
> in 'where clause'. The SQL statement executed was: SELECT
> COUNT(DISTINCT `t`.`id`) FROM `clientbposites` `t`  LEFT OUTER JOIN
> `client` `client` ON (`t`.`client_id`=`client`.`id`)  WHERE
> (bposite.name LIKE :ycp0)
> (D:\wamp\www\yi\framework\db\CDbCommand.php:516)</p><pre>#0
> D:\wamp\www\yi\framework\db\CDbCommand.php(411):
> CDbCommand->queryInternal('fetchColumn', 0, Array)

how can implement non-related table with cgridview search and sort options.

My database table and result girdview

最佳答案

我已经写了一篇关于这个的分步博客文章。如果您遇到困难,请随意阅读并提出问题。不要在这里写下所有内容来重复自己,这是链接:http://www.mrsoundless.com/post/2011/05/09/Searching-and-sorting-a-column-from-a-related-table-in-a-CGridView.aspx

它似乎帮助了很多人。希望它也能帮助你:)

关于Yii CGridView 使用关系表排序和搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725520/

相关文章:

php - ActiveDropDownList 中的默认值

Cakephp 和 Yii : similarities/differences/speed?

php - Yii , 在 cgridview 中显示不同的日期格式

php - 当表为空时 Yii 查询不返回 null

php - 未捕获的TypeError:当 'yiiactiveform' => true时,对象[object Object]没有方法 'enableAjaxValidation',

css - Yii Asset manager - 带图像 url 的 css

sorting - Yii2 过滤具有多重关系的数据

sorting - 如何对具有HAS_MANY关系的cgridview列进行排序?

php - 我们可以在 yii 中指定默认 Controller 和操作

drop-down-menu - yii 中的下拉列表