Главная » Laravel » Функции выбора данных из базы данных

Функции выбора данных из базы данных

264 просмотров

public function getItems ($arrWhere = [])
{
$builder = $this->model;

// Select fields
if (isset($arrWhere['fields']) && $arrWhere['fields'] != '') {
$builder = $builder->select($arrWhere['fields']);
} else {
$builder = $builder->select('*');
}

// Parameter WHERE
if (isset($arrWhere['where']) && !empty($arrWhere['where'])) {
foreach ($arrWhere['where'] as $component) {
if (isset($component['operator']) && !empty($component['operator'])) {
$builder = $builder->where($component['field'], $component['operator'], $component['value']);
} else {
$builder = $builder->where($component['field'], $component['value']);
}
}
}

// Parameter WHERE IN
if (isset($arrWhere['whereIn']) && !empty($arrWhere['whereIn'])) {
foreach ($arrWhere['whereIn'] as $field => $value) {
$builder = $builder->whereIn($field, $value);
}
}

// Parameter WHERE HAS
if (isset($arrWhere['whereHas']) && !empty($arrWhere['whereHas'])) {
foreach ($arrWhere['whereHas'] as $component) {
$builder = $builder->whereHas(
$component['relation'], function ($q) use ($component) {
if ($component['condition'] == 'where') {
if (isset($component['operator']) && !empty($component['operator'])) {
$q->where($component['field'], $component['operator'], $component['value']);
} else {
$q->where($component['field'], $component['value']);
}
}
if ($component['condition'] == 'whereIn') {
$q->whereIn($component['field'], $component['value']);
}
}
);
}
}

// Parameter SKIP
if (isset($arrWhere['skip']) && !empty($arrWhere['skip'])) {
$builder = $builder->skip($arrWhere['skip']);
}

// Parameter TAKE
if (isset($arrWhere['take']) && !empty($arrWhere['take'])) {
$builder = $builder->take($arrWhere['take']);
}

// Parameter SORT
if (isset($arrWhere['sort']) && !empty($arrWhere['sort'])) {
foreach ($arrWhere['sort'] as $field => $value) {
$builder = $builder->orderBy($field, $value);
}
}

// Parameter PAGINATION
if (isset($arrWhere['pagination']) && !empty($arrWhere['pagination'])) {
$builder = $builder->paginate($arrWhere['pagination']);
} else {
$builder = $builder->get();
}

// Parameter KEY BY
if (isset($arrWhere['keyBy']) && $arrWhere['keyBy']) {
$builder = $builder->keyBy($arrWhere['keyBy']);
}

return $builder;
}

Читайте также:

Что сегодня актуально в SEO?

Seo 10 лет назад и seo сейчас это совсем разные вещи. Раньше было намного проще попасть в топ, не владея знаниями написания статей и продвижения сайта. Основные отличие представлены в таблице:     ...

Оптимизация и ускорение wordpress вручную

Основная проблема после создания сайта это скорость загрузки страниц. Что негативно сказывается на поведенческих факторах и ранжировании сайта в поисковых системах. Особенно если долгая загрузка для мобильного трафика. ...

Абсолютный и относительный адрес к картинкам

При верстке страницы можно указать для картинок относительное или абсолютное место расположение . Абсолютное - указывается точный адрес, где лежит картинка на сервере. Пример  <img ...
Показать еще