GOOGLE ADS

суббота, 30 апреля 2022 г.

Столбцы CONCAT с красноречивым Laravel 5

Считай меня новичком в laravel

Цель такова: у меня есть два столбца, теперь мне нужно, idчтобы перед ними стоял префикс той component nameже строки в таблице.

Например (работает)... У меня есть Mysql, например

SELECT CONCAT(components.name," ", components.id) AS ID
FROM `components`

И выход

Я БЫ

|TestComp 40 |
-------------
|component 41 |
-------------
|test 42 |

Мне нужно то же самое в красноречивом стиле laravel, так как здесь компонент - это имя модели. Итак, я попробовал что-то вроде

$comp=Component::select("CONCAT('name','id') AS ID")->get()

но это не работает.
Я думаю, потому что синтаксис неверен.
Пожалуйста, помогите мне с правильным синтаксисом. Использование laravel Models.

Примечание. Я сделал вышеуказанный запрос, ссылаясь на то, что он доступен в Интернете.

User::select(DB::raw('CONCAT(last_name, first_name) AS full_name'))


Решение проблемы

Вам нужно обернуть ваш запрос в DB::raw:

$comp = Component::select(DB::raw("CONCAT('name','id') AS ID"))->get()

Кроме того, обратите внимание, что поскольку вы выполняете свой запрос таким образом, ваша модель может вести себя по-другому, поскольку этот выбор удаляет все другие поля из оператора выбора. Таким образом, вы не можете прочитать другие поля из своей модели без нового запроса. Так что используйте это ТОЛЬКО для ЧТЕНИЯ данных, а не для ИЗМЕНЕНИЯ данных.

Кроме того, чтобы сделать его хорошим списком, я предлагаю вам изменить свой запрос на:

$comp = Component::select(DB::raw("CONCAT('name','id') AS display_name"),'id')->get()->pluck('display_name','id');
// dump output to see how it looks.
dd($comp);// array key should be the arrray index, the value the concatted value.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...