У меня есть 3 таблицы в моей базе данных,
Изображение ниже, я следовал http://www .yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/
, чтобы получить окончательную сетку с целью поиска и сортировки. поэтому я подключил 2 таблицы в функции search()
, например
public function search() { // Предупреждение. Измените следующий код, чтобы удалить атрибуты, которые // не следует искать. $criteria=новый CDbCriteria; $criteria->with = array('bposite'); $критерии->вместе = ложь; $criteria->with = массив('клиент'); $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('пароль',$this->пароль,true); $criteria->compare('bposite.name', $this->bposite_search, true ); $criteria->compare('client.name', $this->client_search, true); вернуть новый CActiveDataProvider($this, array( 'критерии'=>$критерии, 'сортировать'=>массив( 'атрибуты'=>массив( 'client_search'=>массив( 'asc'=>'client.name', 'desc'=>'client.name DESC', ), 'bposite_search'=>массив( 'asc'=>'bposite.name', 'desc'=>'bposite.имя DESC', ), '*', ), ), )); } }
Но я получаю результат для клиента, поиск и сортировка bposite показывают проблему вроде
> Error 500: CDbException
> 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)
#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.