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])); }
/** * 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; }
/** * 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'); }