Отображение значения столбца в ответ - laravel 5.6

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

Контроллер

   $items_counted = DB::select( DB::raw(" select * from (
          SELECT  COUNT(names) as products
          FROM Shop
          GROUP BY names
          ))); 

Если клиенты выбирают обувь Masorini и обувь John Foster, ответ должен быть [{Masorini : 2 }], [{John Foster : 2 }] and not [{Product : 2 }], [{Product : 2 }].

Я пытаюсь получить значение (имя) того, что подсчитывается в базе данных

Как я могу этого добиться?

PS: Новый пользователь laravel

создать отношение hasOne в модели и использовать его для получения значений. это ядро ​​laravel, например, stackoverflow.com/a/42515792/3016038

Vipul 09.07.2018 12:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
97
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это:

$items_counted = DB::select(DB::raw("select names, sum(names) as sum from Shop GROUP BY names");
$result = [];
foreach ($items_counted as $item) {
    $result[$item->name] = $item->sum;
}
Ответ принят как подходящий

Первое предложение - использовать построитель запросов (или еще лучше красноречивый ORM).

Вот что вы можете сделать:

$items_counted = DB::table('Shop')
                   ->groupBy('names')
                   ->select('names', DB::raw('COUNT(names) as products'))
                   ->pluck('products', 'names');

Когда вы отправляете это как ответ JSON, он должен иметь нужный вам формат.

так мой ответ выглядит как {"\" 0-3 \ "": 2, "\" Завышена \ "": 1, "\" Надежно \ "": 1, "\" Очень доволен \ "": 2 }

Michael Anaman 09.07.2018 12:50

Как я могу убрать знак `//`, чтобы он выглядел как {"0-3":2,"Overpriced":1,"Reliable":1,"Very satisfied":2}

Michael Anaman 09.07.2018 12:51

Котировки хранятся в базе данных?

apokryfos 09.07.2018 12:52

Да, котировки хранятся в базе данных

Michael Anaman 09.07.2018 13:02

В идеале вы не должны хранить их в базе данных, но вы можете удалить их, если измените выбор на ->select(DB::raw('JSON_UNQUOTE(names) as names'), DB::raw('COUNT(names) as products')). для этого требуется MySQL 5.7+, а также предотвращается использование любого индекса

apokryfos 09.07.2018 13:06

Другие вопросы по теме