как отсортировать результат подсчета данных - PullRequest
0 голосов
/ 06 апреля 2019

Мне нужно просмотреть на лезвии самые популярные категории из таблицы продуктов, собирая продукты и подсчитывая их категории и сортируя результаты по их порядку. Desc

    $popular_channels = products::select('category')->get();

    $collection = collect($popular_products);
    $counted = $collection->countBy(function ($value){
        return $value['category'];
    });

    $sorted = array_values(Arr::sort($counted, function ($values) {
        return $values['category'];
    }));
    $counted = json_decode($counted,JSON_UNESCAPED_UNICODE);

    $popular = channels::query();

    foreach ($counted as $key=>$value)
    {
        $popular = $popular->where('id', $key);
    }
    $popular = $popular->offset(0)->limit(3)->orderby('id','desc')->get();

1 Ответ

0 голосов
/ 06 апреля 2019

Помимо моего решения, у вашего кода есть еще несколько неясных для меня моментов:

  • почему вы создаете массив с именем $popular_channels, когда работаете с категориями, а затем с несколькими последними строкамиВы вводите модель канала в массиве $popular?
  • для чего нужен массив $sorted?
  • Вы получаете популярный categories идентификатор и затем фильтруете channels в идентификаторестолбец с идентификаторами из таблицы категорий.Они связаны или связаны каким-либо образом?

И пара замечаний, которые могут быть полезны:

  • Метод get возвращает экземпляр collection, поэтомувам на самом деле не нужно вызывать метод collect
  • упорядочение по идентификатору (последняя строка кода) приведет к тому, что результаты будут отсортированы по идентификатору таблицы, а не по популярным идентификаторам категорий, которые вы получили в первую очередь..
  • Я думаю, что вы пытаетесь отфильтровать каналы только по популярным идентификаторам, которые вы нашли на первом шаге, вместо того, чтобы перебирать подсчитанный массив, вы также можете использовать whereIn($field, $keys)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...