2009-08-05 58 views
2

我有两个模型和一个连接表,User,Postposts_usersCakePHP中的UpdateAll和HABTM

posts_users表包含一些额外的字段,其中之一是is_active。我想将所有用户帖子设置为活动状态,以便用户自己处于活动状态。

我有以下

$this->Post->PostsUser->updateAll(array('PostsUser.is_active' => 1), array('PostsUser.user_id' => $data['User']['id'], 'User.is_active' => 1)); 

这会导致MySQL错误

Warning (512): SQL Error: 1054: Unknown column 'User.is_active' in 'where clause' ...

Query: UPDATE posts_sites AS PostsUser SET PostsUser . is_active = 1 WHERE PostsUser . user_id = 1 AND User . is_active = 1

正如你可以看到用户的表是没有得到参加了查询。有没有围绕这个问题?

回答

2

您是否明确定义了PostsUser模型,还是仅使用隐式自动生成的模型?

看来后者是这样,所以这个模型可能没有任何关联。在进行更新调用之前,您可以动态绑定它们,或者您可以显式创建模型文件并定义关联。

I.e. PostUser模型彼此连接,但PostsUser模型只是一个空的助手模型,其中任何一个模型都没有。它本身并没有任何连接,所以当从PostsUser拨打电话时,它没有定义的关联。

Post <---> User 
    |    | 
    v    v 
PostsUser  PostsUser 
+0

这是一个自动生成的模型,我用适当的关联创建了模型文件,现在它工作,干得好! – DanCake 2009-08-05 06:14:42