CakePHP HABTM过滤

我有两张桌子 -
users
servers
,以及HABTM关系,
users_servers
。用户HABTM服务器,反之亦然。 我正在尝试为Cake找到一种方法来选择分配给用户的服务器。 我正在尝试像ѭ3这样只返回所有服务器的东西,无论它们是否属于用户。
$this->User->Server->find('all', array('conditions' => array('Server.user_id' => 1)))
只是给出了一个未知的列SQL错误。 我确信我错过了一些显而易见的东西,但只是需要有人指出我正确的方向。 谢谢!     
已邀请:
你的表名是对的。有很多方法可以做到这一点: 使用Containable行为 在AppModel中,设置以下内容:
 var $recursive = -1;
 var $actsAs = array('Containable');
然后,使用以下代码查询您的服务器:
$userWithServers = $this->User->find('all', array(
    'conditions' => array('User.id' => 1),
    'contain' => array('Server')
));
请注意,我们正在查询用户模型,而不是服务器模型来完成此操作。 使用bindModel
$this->Server->bindModel(array('hasOne' => array('UsersServer')));
$this->Server->find('all', array(
    'fields' => array('Server.*'),
    'conditions' => array('Server.user_id' => 1)
));
我个人不建议使用bindModel。最终,您的代码变得有点难以管理。您应尽可能尝试使用Containable行为。代码看起来更简洁。有关bindModel方法的更多信息,请点击此处。 HTH。     
我想你应该为tour table user_servers命名。     

要回复问题请先登录注册