Пример #1
0
 public function testBuildWhereStatement()
 {
     $condition = new Condition();
     $condition->add('testColumn', 11);
     $condition2 = new Condition(ConditionInterface::DISJUNCTION);
     $condition2->add('testColumn2', ['test', 'test2', 'test3']);
     $condition2->add('testColumn3', 'test', ArgumentInterface::NOT_EQUAL);
     $condition2->add('testColumn3', 'test', ArgumentInterface::NOTNULL);
     $condition2->add('testColumn3 = "test"', '', ArgumentInterface::OWN);
     $condition2->add('testColumn', [1, 2], ArgumentInterface::NOT_EQUAL);
     $condition->addCondition($condition2);
     static::assertEquals('(testColumn = 11) AND ((testColumn2 IN ("test","test2","test3")) OR (testColumn3 != "test") OR (testColumn3 IS NOT NULL) OR (testColumn3 = "test") OR (testColumn NOT IN (1,2)))', $this->sqlBuilder->buildWhereStatement($this->metadata, $condition));
 }
Пример #2
0
 /**
  * @param array $entityIDs
  *
  * @return array
  */
 protected function applySearch(array $entityIDs)
 {
     $condition = new Condition(ConditionInterface::DISJUNCTION);
     foreach ($this->searchFilter as $searchText) {
         foreach (static::$fieldValueColumns as $fieldId => $fieldColumn) {
             $condition->addCondition((new Condition())->addArgument(new Argument($fieldColumn, '%' . $searchText . '%', ArgumentInterface::LIKE))->addArgument(new Argument(\samsoncms\api\MaterialField::F_FIELDID, $fieldId)));
         }
     }
     return $this->query->entity(\samsoncms\api\MaterialField::class)->whereCondition($condition)->where(Material::F_PRIMARY, $entityIDs)->fields(Material::F_PRIMARY);
 }
Пример #3
0
 /**
  * Build correct localized field request for retrieving additional fields records.
  *
  * @param Field[] $fields Collection of additional fields
  *
  * @return Condition Built condition for query
  */
 protected function fieldsCondition($fields)
 {
     // Group fields by localization
     $localizedColumns = array();
     $notLocalizedColumns = array();
     /** @var Field $field Iterate table columns(fields) */
     foreach ($fields as $field) {
         if ($field->localized()) {
             $localizedColumns[] = $field->id;
         } else {
             $notLocalizedColumns[] = $field->id;
         }
     }
     // Create field condition
     $fieldsCondition = new Condition(ConditionInterface::DISJUNCTION);
     // Create localized condition
     if (count($localizedColumns)) {
         $localizedCondition = new Condition(ConditionInterface::CONJUNCTION);
         $localizedCondition->add(Field::F_PRIMARY, $localizedColumns)->add(MaterialField::F_LOCALE, $this->locale);
         // Add this condition to condition group
         $fieldsCondition->addCondition($localizedCondition);
     }
     // Create not localized condition
     if (count($notLocalizedColumns)) {
         $fieldsCondition->add(Field::F_PRIMARY, $notLocalizedColumns);
     }
     return $fieldsCondition;
 }