public function testGetFieldsByChannelCollection()
 {
     $channels = Channel::where('channel_id', 1)->get();
     $fields = $this->repository->getFieldsByChannelCollection($channels);
     $ids = [];
     foreach ($fields as $field) {
         $ids[] = $field->field_id;
     }
     $this->assertThat($ids, new ArrayHasOnlyValuesConstraint([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]));
 }
Exemple #2
0
 /**
  * Translates a custom field name to field_id_x and performs a where like/regexp query
  *
  * @param  \Illuminate\Database\Eloquent\Builder $query
  * @param  string                                $fieldName
  * @param  mixed                                 $value
  * @param  string                                $boolean
  * @param  bool                                  $not
  * @param  bool                                  $wholeWord
  * @return \Illuminate\Database\Eloquent\Builder
  */
 protected function scopeWhereFieldContainsHandler(Builder $query, $fieldName, $value, $boolean = 'and', $not = false, $wholeWord = false)
 {
     if ($value) {
         $operator = $not ? 'not ' : '';
         if ($wholeWord) {
             $operator .= 'regexp';
             $value = '([[:<:]]|^)' . preg_quote($value) . '([[:>:]]|$)';
             if (self::$fieldRepository->hasField($fieldName)) {
                 $column = 'field_id_' . self::$fieldRepository->getFieldId($fieldName);
                 $method = $boolean === 'and' ? 'whereRaw' : 'orWhereRaw';
                 $tablePrefix = $query->getQuery()->getConnection()->getTablePrefix();
                 $query->{$method}("`{$tablePrefix}channel_data`.`{$column}` {$operator} '{$value}'");
             }
         } else {
             $operator .= 'like';
             $value = '%' . $value . '%';
             $this->scopeWhereFieldHandler($query, 'where', array($fieldName, $operator, $value, $boolean));
         }
     } else {
         $operator = $not ? '!=' : '=';
         $this->scopeWhereField($query, $fieldName, $operator, $value, $boolean);
     }
     return $query;
 }
Exemple #3
0
 /**
  * Define the Fields Eloquent relationship
  * @return \rsanchez\Deep\Relations\HasManyFromRepository
  */
 public function fields()
 {
     return new HasManyFromRepository(self::$fieldRepository->getModel()->newQuery(), $this, 'channel_fields.group_id', 'field_group', self::$fieldRepository, 'getFieldsByGroup');
 }