我是一个新手,我无法正确查看我的cakephp查询。
我有一个用户表和用户hasmany rotas。 rotas表看起来像
monday_am
monday_pm
tuesday_am
等
如果用户应该在monday_pm中,那么该字段将为1.否则为0.
我希望得到属于特定房间的所有用户,已取消注册= 0和 - 这就是我遇到问题的地方 - 谁有一个rota,其中(例如)tuesday_am = 1
所以我有代码:
$options['conditions'] = array('User.room_id'=>$room_id, 'User.deregistered'=>0, 'User.request'=>0);
$options['joins'] = array(
array('table' => 'rotas',
'alias' => 'rota',
'type' => 'INNER',
'conditions' => array('rota.'.$todaysDay.'_'.$amPm => 1)
)
);
$usersToday = $this->User->find('all', $options);
如果我不尝试加入,那么我会得到一个很好的小用户列表,就像我期望的那样。如果我尝试连接,我会得到100个结果,这些结果大部分都是重复的!
如何在Users表和Rotas表中只获得具有所需条件的用户的一条记录,以及如何进行连接会导致如此多的结果?!
感谢
答案 0 :(得分:0)
假设你的rota表中有一个名为user_id的列,你可以像这样制作你的Rota模型:
class Rota extends Model
{
public $belongsTo = array('User');
}
然后在您的控制器中,您可以查询Rotas并从中获取用户。
$users = $this->Rota->find('all', array(
'fields' => array('DISTINCT (User.id)' /* add more fields for selection */ ),
'conditions' => array(
'User.room_id'=>$room_id,
'User.deregistered'=>0,
'User.request'=>0,
'Rota.'.$todaysDay.'_'.$amPm => 1
)
));