= 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(); var_dump($condition->Get(0)); var_dump($condition->Get(1)); // Проверяем его $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); // Проверяем его $this->assertEquals($requireCondition, $builder->Build()); } }