<?php
function buildSqlForNestingLevel($nestingLevel)
{
if ($nestingLevel < 2) {
throw new Exception('Builder works only with 2 and more nesting levels');
}
$closingParenthesisCount = $nestingLevel - 1;
$sql = "SELECT * FROM {$this->table} WHERE path = ? AND parent_id = (";
while (--$nestingLevel) {
$sql .= "SELECT id FROM {$this->table} WHERE path = ?";
if ($nestingLevel > 1) {
$sql .= ' AND parent_id = (';
}
}
$sql .= str_repeat(')', $closingParenthesisCount);
return $sql;
}
PD9waHAKCmZ1bmN0aW9uIGJ1aWxkU3FsRm9yTmVzdGluZ0xldmVsKCRuZXN0aW5nTGV2ZWwpCnsKICAgIGlmICgkbmVzdGluZ0xldmVsIDwgMikgewogICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0J1aWxkZXIgd29ya3Mgb25seSB3aXRoIDIgYW5kIG1vcmUgbmVzdGluZyBsZXZlbHMnKTsKICAgIH0KICAgICRjbG9zaW5nUGFyZW50aGVzaXNDb3VudCA9ICRuZXN0aW5nTGV2ZWwgLSAxOwogICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NIHskdGhpcy0+dGFibGV9IFdIRVJFIHBhdGggPSA/IEFORCBwYXJlbnRfaWQgPSAoIjsKCiAgICB3aGlsZSAoLS0kbmVzdGluZ0xldmVsKSB7CiAgICAgICAgJHNxbCAuPSAiU0VMRUNUIGlkIEZST00geyR0aGlzLT50YWJsZX0gV0hFUkUgcGF0aCA9ID8iOwogICAgICAgIGlmICgkbmVzdGluZ0xldmVsID4gMSkgewogICAgICAgICAgICAkc3FsIC49ICcgQU5EIHBhcmVudF9pZCA9ICgnOwogICAgICAgIH0KICAgIH0KICAgICRzcWwgLj0gc3RyX3JlcGVhdCgnKScsICRjbG9zaW5nUGFyZW50aGVzaXNDb3VudCk7CgogICAgcmV0dXJuICRzcWw7Cn0K