Нытье про QueryBuilder
Написал небольшой QueryBuilder для нужд команды. Он на C#, но по барабану. Я хочу понять то ли я не прав, то ли одно из двух.
Для началу кусок из тестов:
Это тот тест, которые они хотят чтобы выполнялся.
Т.е. логика: Where(аналог AndWhere) или OrWhere определяют какой оператор будет ПОСЛЕ данного условия.
В кохановском билдере логика другая:
Каждый Condition определяет какой оператор ДО него будет стоять.(AND или OR)
Т.е. по этой логике тест должен был бы работать так:
Возможно я просто не могу взглянуть на это с другой стороны(на самом деле эти два случая - одно и то же, просто с разных сторон). Я не смог найти убедительных аргументов в пользу моего(Кохановского) подхода. Я почему-то считал что он более "человечный".
Есть какие-нибудь мысли?
Написал небольшой QueryBuilder для нужд команды. Он на C#, но по барабану. Я хочу понять то ли я не прав, то ли одно из двух.
Для началу кусок из тестов:
Это тот тест, которые они хотят чтобы выполнялся.
PHP:
string actual = OracleQueryBuilder
.Select(selFields)
.From("test", "c")
.Where("c.test = c.test2")
.OrWhere("c.test = c.test2")
.OrWhere("c.test = c.test3")
.GetSql();
string expected = "SELECT c.test, c.test2 FROM test c WHERE c.test = c.test2 AND c.test = c.test2 OR c.test = c.test3";
В кохановском билдере логика другая:
Каждый Condition определяет какой оператор ДО него будет стоять.(AND или OR)
Т.е. по этой логике тест должен был бы работать так:
PHP:
string actual = OracleQueryBuilder
.Select(selFields)
.From("test", "c")
.Where("c.test = c.test2")
.OrWhere("c.test = c.test2")
.OrWhere("c.test = c.test3")
.GetSql();
string expected = "SELECT c.test, c.test2 FROM test c WHERE c.test = c.test2 [B]OR[/B] c.test = c.test2 OR c.test = c.test3";
Есть какие-нибудь мысли?