我正在尝试检查五个列中的条目组合(我有parent1,parent2,parent3,parent4和parent5,所有这些都是整数)在我的表单验证中不存在。 我试过了:
$query = Doctrine_Query::create()
->select('m.id', 'm.name') -> from ('Mix m')
->where('m.parent1=?', $values['parent1'])
->orWhere('m.parent1=?', $values['parent2'])
->orWhere('m.parent1=?', $values['parent3'])
->orWhere('m.parent1=?', $values['parent4'])
->orWhere('m.parent1=?', $values['parent5'])
->andWhere('m.parent2=?', $values['parent1'])
->orWhere('m.parent2=?', $values['parent2'])
......等等。 可能不是最有效的方法,但是如果其中一个值匹配数据库中已有的任何列,则无论是抛出错误,它都不会检查实际的组合...... 任何帮助将非常感谢!
答案 0 :(得分:0)
怎么样......
// Set of possible matches
$set = array($values['parent1'], $values['parent2'], $values['parent3'], $values['parent4'], $values['parent5']);
// Let's make it two-dimensional for simpler DQL syntax
$sets = array($set, $set, $set, $set, $set);
// Multiple WHERE IN AND
$query = Doctrine_Query::create()
->select('m.id', 'm.name')
->from ('Mix m')
->where('m.parent1 IN ? AND m.parent2 IN ? AND m.parent3 IN ? AND m.parent4 IN ? AND m.parent5 IN ?', $sets);
WHERE IN AND
应确保每个值都匹配。但是,至少有一个失败的情况是,如果$ set中的多个值相同(例如'5,5,1,4,1',则查询将给出错误匹配。也许其他人可以改进那个。也可能是一个缓慢的查询。