Не удается отсортировать ответ на вызов API Shopify Product - PullRequest
0 голосов
/ 02 апреля 2020

Относительно этой конечной точки: https://shopify.dev/docs/admin-api/rest/reference/products/product#index -2020-04

Я звоню с разделенным запятыми списком идентификаторов в параметрах. Я предположил, что порядок продуктов, возвращаемых API, будет таким же, как и в списке разделенных запятыми идентификаторов в параметрах. Похоже, это не так.

Есть ли способ, чтобы возвращаемый заказ был таким же?

Если нет, есть ли другой способ сделать это после свершившегося факта?

Вот фрагмент моего кода:

        while($row = $result->fetch_array(MYSQLI_ASSOC)) {
            $productIDs[] = (int)$row['product_id'];
        }
        $params = array(
            'ids'        => implode(', ', $productIDs),
            'fields' => 'title,handle,vendor,price,images'
        );
        $products = $shopify->Product()->get($params);

Порядок продуктов в $products отличается от порядка продуктов в $productIDs.

Любая идея почему это или как я могу получить заказ, чтобы соответствовать?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Вот еще один способ сделать это:

usort($products, function($p1, $p2) use ($productIDs) {
    $pos_p1 = array_search($p1['id'], $productIDs);
    $pos_p2 = array_search($p2['id'], $productIDs);
    return $pos_p1 - $pos_p2;
});

Shopify REST API не поддерживает сортировку продуктов. Я думаю, что продукты всегда возвращаются отсортированы по названию.

0 голосов
/ 02 апреля 2020

Я закончил тем, что сделал это:

            foreach($productIDs as $productID) {
                foreach($products as $product) {
                    if ($productID == $product['id']) {                 
                        $sortedProducts[] = $product;
                    }
                }
            }

Теперь $sortedProducts - это, по сути, переменная $products, отсортированная по порядку в $productIDs.

Есть ли лучший способ чтобы сделать это, чем две вложенные циклы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...