2012-05-23 13 views
5

mam 3 tabele w mojej bazy danych,Yii CGridView sortowania i wyszukiwania z tabeli relacji

obraz jest poniżej, śledzę http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/

aby uzyskać ostateczną siatkę zz wyszukiwania i sortowania cel. Więc mam podłączone 2 tabele w search() funkcji jak

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', 
            ), 
            '*', 
           ), 
          ), 
    )); 
    } 
} 

Ale jestem coraz wynik dla klienta, bposite Wyszukiwanie, i porządek pokazuje problem, jak

>  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

+0

Czy wystąpił błąd podczas zmiany '$ criteria-> together' na 'true'? – dInGd0nG

+0

Brak błędu, właśnie próbowałem. Mam odpowiedź poniżej .. – bala

Odpowiedz

10

I Zrobiłem krok po kroku wpis na blogu na ten temat. Jeśli utkniesz, możesz go przeczytać i zadawać pytania. Zamiast powtarzać się, pisząc wszystko tutaj, tutaj jest link: http://www.mrsoundless.com/post/2011/05/09/Searching-and-sorting-a-column-from-a-related-table-in-a-CGridView.aspx

Wygląda na to, że pomogło to grupie ludzi. Mam nadzieję, że to ci pomoże :)

+1

Witam, Dziękuję bardzo, mam odpowiedź ze swojego bloga. ** $ criteria-> with = array ("klient", "bposite"); ** Dostałem go z obszaru komentarzy. musimy dodać wszystkie relacje w jednej tablicy. Dziękuję bardzo za pomoc. :) – bala

+0

Bardzo proszę. :) – MrSoundless

+0

Genialny. Dzięki! –

Powiązane problemy