Revision: 58418
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at July 13, 2012 10:08 by drock
                            
                            Initial Code
//AT THE END OF YOUR MODEL SEARCH FUNCTION
return new CActiveDataProvider($this, array(
				'criteria'=>$criteria,
				'pagination' => array(
						'pageSize' =>15,
				),
				'sort'=>array(
						'defaultOrder'=> array('id'=>CSort::SORT_ASC), //Can add more here, but arrows show
				
						'attributes'=>array(
								'id',
								'followers_count'=>array(
										'desc' => '(SELECT SUM(graph_edge.id) FROM graph_edge WHERE graph_edge.end = t.id AND graph_edge.status = 1) DESC',
										'asc' => '(SELECT count(graph_edge.id) FROM graph_edge WHERE graph_edge.end = t.id AND graph_edge.status = 1) ASC', //This query should match your STAT relationship
								),
								'create_time'=>array(
										'desc' => 't.create_time DESC',
										'asc' => 't.create_time ASC',
				
								),
								'page_title',
						),
				),
		));
                                Initial URL
Initial Description
When setting up the AJAX click to sort links for your index pages, it's nice to be able to sort on STAT and related data. To get related data sorting in my CListView, I ended up having to forget about using "together" and "with" in my search function, and instead let everything lazy load. The number of queries explode, which sucks. For handling your STAT relations, you can manually write SQL that runs when the sorting links are clicked. So this is pretty much duplicate code and sloppy, but it works. The query below recreated this relation that exists on the model: <code> 'followersCount'=>array(self::STAT,'GraphEdge','end','condition'=>'status=1'), </code> The naming here doesn't matter, the relation and sortable attribute are unfortunately independent. This was written for CListView but probably works with CGridView as well. Don't forget to add followers_count to your List View's sortable attributes array.
Initial Title
Yii: Ajax sorting on STAT relations
Initial Tags
Initial Language
PHP