= 18 OR `profile` <= 12 AND (`Name` = Alex AND (`Age` > 18 OR `FirstName` = Titanic))"; // Создаем условие методом цепочек $condition = new ConditionBuilder()->WhereEquals('id', 1)->And()->WhereGreaterThanEqual('age', 18)->Or() ->WhereLessThanEqual('profile', 12)->And()->AddGroup(Condition::LOGIC_AND, [ new Condition("Name", '=', "Alex"), new ConditionGroup(Condition::LOGIC_OR, [ new Condition("Age", '>', 18), new Condition("FirstName", '=', "Titanic") ]), ])->Build(); // Эмулирую подготовку условий $condition = StringExtension::ReplaceAll($condition->Get(1), $condition->Get(0)); // Проверяем его $this->assertEquals($requireCondition, $condition); // Задаем условие методом массива $conditionArray = [ "id" => 1, 'AND', "age" => ['>=', 18], 'OR', "profile" => ['<=', 12], 'AND', [ 'AND', "Name" => "Alex", ['OR', "Age" => ['>', 18], "FirstName" => "Titanic"] ] ]; // Создаем ConditionBuilder $builder = ConditionBuilder::Parse($conditionArray); // Получаем условие $condition = $builder->Build(); // Эмулирую подготовку условий $condition = StringExtension::ReplaceAll($condition->Get(1), $condition->Get(0)); // Проверяем его $this->assertEquals($requireCondition, $condition); } }