Метод addSelect
Метод addSelect применяется к запросу Query Builder или Eloquent и добавляет новые поля в список выборки, не удаляя ранее указанные. Первым параметром передаётся имя колонки или массив колонок для добавления. Метод возвращает тот же запрос, но с расширенным списком выбираемых полей. Это полезно, когда необходимо добавить дополнительные поля к уже существующему запросу с select.
Синтаксис
<?php
Model::addSelect($column);
Model::addSelect([$column1, $column2, ...]);
?>
Пример
Давайте добавим поле 'created_at' к уже существующему запросу:
<?php
use AppModelsArticle;
$res = Article::select('title', 'text')
->addSelect('created_at')
->first();
echo $res->title;
echo $res->text;
echo $res->created_at;
?>
Результат выполнения кода:
"article"
"text content"
"2024-01-15 10:00:00"
Пример
Давайте добавим несколько полей одновременно:
<?php
use AppModelsArticle;
$res = Article::select('id', 'title')
->addSelect(['created_at', 'updated_at'])
->first();
echo $res->id;
echo $res->title;
echo $res->created_at;
echo $res->updated_at;
?>
Результат выполнения кода:
"1"
"article"
"2024-01-15 10:00:00"
"2024-01-15 12:30:00"
Пример
Использование метода addSelect с агрегатными функциями:
<?php
use AppModelsArticle;
use IlluminateSupportFacadesDB;
$res = Article::select('title')
->addSelect(DB::raw('COUNT(*) as total'))
->first();
echo $res->title;
echo $res->total;
?>
Результат выполнения кода:
"article"
"5"
Пример
Добавление поля через addSelect в запросе с соединением таблиц:
<?php
use AppModelsArticle;
$res = Article::select('articles.id', 'articles.title')
->join('categories', 'articles.category_id', '=', 'categories.id')
->addSelect('categories.name as category_name')
->first();
echo $res->id;
echo $res->title;
echo $res->category_name;
?>
Результат выполнения кода:
"1"
"article"
"Technology"