-2

此功能在 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));

我想写一个这样的查询和条件:

SELECT user_id FROM trainings_users WHERE training_id = 172 AND training_id = 174

此查询在获取第一个 ID 时有效。
表说明:我有 3 个表 Training - User - Training_users ... 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

4

2 回答 2

5

为什么你的 $array_project_id 首先是一个字符串(除了命名冲突^^)?它应该是一个 id 数组,并且 cake 将自动能够开箱即用地使用它。

好吧,无论如何:

$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。这将得到你想要的结果。

于 2013-02-14T17:35:25.710 回答
0

最简单的方法是创建一个 habtm 关系。

然后你可以这样做:

$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'])
));
于 2013-02-18T12:36:37.213 回答