Справка по проверке формы сложного учения! - PullRequest
0 голосов
/ 29 ноября 2010

Я пытаюсь проверить, что комбинация записей в пяти столбцах (у меня есть 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'])

... и так далее. Возможно, это не самый эффективный способ, но, несмотря на то, что он выдает ошибку, если одно из значений совпадает с любым из столбцов в базе данных, он не проверяет фактическую комбинацию ... Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 30 ноября 2010

Как насчет ...

// 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', запрос даст ложные совпадения. Возможно, кто-то еще может улучшитьЭто может быть медленный запрос.

...