1

Many to Manyテーブルで検索条件を作ろうとしているのですが、うまくいきません。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 に答える