1

我正在尝试在多对多表中创建搜索条件,但我遇到了问题。我想使用 Posts 模型进行搜索,并在 likes(many to many) 表中按用户 ID 进行过滤。

表格:帖子、用户和喜欢(多对多)

模型 Post.php 关系:

'user_likes' => array(self::MANY_MANY, 'Users', 'likes(post_id, user_id)'),

后控制器中的搜索条件:

$criteria->with='user_likes';
$criteria->condition='user_likes.id=1'; //Search posts that user id '1' liked.
$posts=Posts::model()->findAll($criteria);

错误:

CDbCommand falhou ao executar o comando SQL: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_likes.id' in 'where clause'. 
4

2 回答 2

1

该表user_likes没有列id

你是这个意思吗?

$criteria->with='user_likes';
$criteria->condition='user_id=1'; //Search if user id '1' liked the post.
于 2012-12-16T17:18:12.527 回答
0

感谢尝试帮助大家。我发现了问题。

使用 findAll 时不需要声明$criteria->together=true;,但如果使用 CActiveDataProvider 则必须。

我希望这对某人也有帮助;)

于 2012-12-17T05:22:20.683 回答