根据关联表做数据的排序和搜索

现在我有2张表, 一张是UserArticle, 存储的是user和article之间的管理, 一张是Article, 存储的是文章.

我想在读取UserArticle的时候, 根据Article表的title做ASC的排序, 并有可能根据title进行查找.

UserArticle的的关系是这么设置的:



	public function relations()


	{


		return array(


			'article' => array(self::BELONGS_TO, 'Article', 'articleId', 'alias' => 'article'),


			'trigger' => array(self::BELONGS_TO, 'UserRule', 'userRuleId'),


		);


	}


Article的关系里没有和UserArticle相关的设置.

UserArticle里的action代码如下:



	public function actionList() {





		$criteria = new CDbCriteria;





		if (isset($_GET['ruleId']))


			$criteria->condition = 'userRuleId = ' . $_GET['ruleId'];





		$criteria->order = 'createdTime DESC';





		$array = array('trigger', 'article');


		if (isset($_GET['title'])) {


			$array['article'] = array('condition' => "title LIKE %{$_GET['title']}%", 'select' => 'id');


		}





		print_r($array);


		//exit;


		$pages = new CPagination(UserArticle::model()->with($array)->count($criteria));


		$pages->pageSize = self::PAGE_SIZE;


		$pages->applyLimit($criteria);





		if (isset($_GET['sort'])) {


			if ($_GET['sort'] == 'alpha') {


				$array['article']['order'] = '??.title ASC';


			}


		}





		$userArticleList = UserArticle::model()->with($array)->findAll($criteria);





		$this->render('list',array(


			'userArticleList' => $userArticleList,


			'pages' => $pages,


		));


	}


运行后, 提示一下错误

Quote

Unable to count records with composite primary keys. Please explicitly specify the SELECT option in the query criteria.

不解的是select要怎么设置才行呢?

郁闷,我也遇到这个问题了,期待高手解答

Unable to count records with composite primary keys. Please explicitly specify the SELECT option in the query criteria.

大哥,从表面上看你的查询的两个表中有相同的字段,你要在SELECT中指明

出问题的是UserArticle::model()->with($array)->count($criteria). 主要原因是UserArticle用的是composite PK.

我已经改经了对这种用法的支持。现在应该不会出错了。

谢谢qiang了, 我现在就去更新yii框架!!!