Как правильно сформировать WHERE в MODX?

В MODX фреймворке для формирования условий в операторе WHERE можно использовать несколько подходов. Рассмотрим наиболее распространенные способы:

1. Использование метода prepare для псевдозащиты от SQL-инъекций:

$query = $modx->newQuery('MyObject');
$query->where(array(
    'field:=' => $value,        // равно
    'field:<>' => $value,       // не равно
    'field:<' => $value,        // меньше
    'field:>' => $value,        // больше
    'field:like' => '%'.$value.'%',   // содержит
    'field:in' => array(1, 2, 3),       // входит в список значений
    'field:not in' => array(4, 5, 6),   // не входит в список значений
    'OR:field:<' => $value,     // ИЛИ меньше
    'OR:field:>' => $value,     // ИЛИ больше
    'AND:field1:=' => $value1,  // И field1 равно value1
    'AND:field2:=' => $value2   // И field2 равно value2
));

2. Использование строки с условием:

$query = $modx->newQuery('MyObject');
$query->where("field = '$value'");

3. Использование метода andCondition для динамического добавления условий:

$query = $modx->newQuery('MyObject');
$query->where('field1 = ?', $value1);
$query->andCondition('field2 = ?', $value2);

4. Использование модификаторов для более сложных комбинаций условий:

$query = $modx->newQuery('MyObject');
$query->where(array(
    'AND:field1:=' => $value1,
    '<OR:field2:=:==>' => array($value2, $value3),
    'OR:field3:in' => array($value4, $value5)
)->where("field4 LIKE '{$value6}%'"));

В каждом из этих способов вы можете использовать различные операторы сравнения, такие как "=", ">", "<", "LIKE", "IN" и т.д., а также комбинировать их с использованием операторов "AND" и "OR" для получения более сложных условий. Надеюсь, что эти примеры помогут вам сформировать правильные условия WHERE в MODX в соответствии с вашими потребностями.