复杂的多对多查询

数据表:




User(id, username)


Item(id, name, status)


UserItem(id, user_id, item_id, status)



User和Item是多对多关系,UserItem是中间表,

User的model里面




public function relations()

{

	return array(

		"items"=>array(

			self::MANY_MANY,

			"Item",

			"UserItem(user_id, item_id)",

		),

	);

}



想得到的记录是,UserItem.status = 1, Item = 1的所有记录,请问怎么在User的find中写。




$user = User::model()->findByPk(Yii::app()->user->id);



输出的时候这样,




CVarDumper::dump($user->item, 10, true);



能把所有符合条件的记录都输出?

囧~一夜过去了,还没有解决啊,怎么办~

我没实践过中间表有第3字段判断的,但我建议你是否可以改成中间表也用一个model表示,

user->to many userItem

userItem->has one Item

$user = User::model()->with(array(“UserItem”=>array(‘param’=>('status '=>1,‘itemId’=>1))))->findByPk(Yii::app()->user->id);

直接写sql语句解决了~~~