此功能正在处理OR条件。我需要这个来处理AND条件。 任何帮助:
$ands = array();
foreach ($array_training_id as $id) {
$ands[] = array('TrainingsUser.training_id' => $id);
}
$conditions = array('AND' => $ands);
$users = $this->TrainingsUser->find('all', array('conditions' => $conditions));
我想写一个像这样的查询AND条件:
SELECT user_id FROM trainings_users WHERE training_id = 172 AND training_id = 174
此查询在获取第一个ID时有效
表说明:
我有3个表培训 - 用户 - 培训_用户... Training_users表有traing_id和user_id 我想要的东西是这样的东西:SELECT user_id FROM Training_users WHERE training_id = 172 AND training_id = 174
...它没有甚至在SqlMyadmin中工作
当我给training_id 172和training_id 174时我需要的是它必须只返回用户150
答案 0 :(得分:5)
为什么你的$ array_project_id首先是一个字符串(除了命名冲突^^)? 它应该是一个id数组,蛋糕将自动开箱即用。
嗯,无论如何:
$ids = explode(',', $array_project_id);
// now its a clean array
$users = $this->Training->find('all', array('conditions' =>
array('Training.Project_id' => $ids)
));
发表评论后,我仍然没有看到使用AND的价值。 但到底是什么,你走了:
$ands = array();
foreach ($ids as $id) {
$ands[] = array('Training.Project_id' => $id);
}
$conditions = array('AND' => $ands);
$users = $this->Training->find('all', array('conditions' => $conditions));
瞧。但它仍然无法发挥作用。
您似乎正在使用一些HABTM关系(您应该在开始时提供这一重要信息!)。然后你需要查询中间模型/关系,以便在这里有两个belongsTo-relations(=左连接)。
你真正需要的是什么(再次:为什么你刚刚发布相关关系和关于Training_users的信息?)是查询中间表“Training_users”,其中一个包含在belongsTo方向(左边连接到用户)。 而最重要的事实是:使用OR而不是AND。这将获得您想要的结果。
答案 1 :(得分:0)
最简单的方法是创建一个habtm-relation。
然后你可以这样做:
$users = $this->User->Training->find('all', array('conditions' => array('User.id =' => $ids)));
这可以找到User.id = $ id
的所有内容使用AND条件,它将是:
$users = $this->User->Training->find('all', array('conditions' =>
'AND' => array('User.id =' => $ids['n'], 'User.id =' => $ids['n'])
));