@RFV_online

Узнать ID последнего заказа пользователя?

Здравствуйте.

В данном куске выводится первый заказ сделаный пользователем, а мне надо получить ID последнего сформировоного заказа. помогите пожалуйся.
$arFilter = Array(
        "USER_ID" => $USER->GetID(),
    );
    $db_sales = CSaleOrder::GetList(array(), $arFilter);
    while ($ar_sales = $db_sales->Fetch())
    {
        $lasorderid = $ar_sales['ID']; //присвоили переменной ID заказа
    break; //оборвали цикл
    }
  • Вопрос задан
  • 2105 просмотров
Решения вопроса 1
это конечно говнокод, т.к. надо править запрос к БД, и там уже задавать условие
$arFilter = Array(
    "USER_ID" => $USER->GetID(),
);
$db_sales = CSaleOrder::GetList(array(), $arFilter);
$ids = [];
while ($ar_sales = $db_sales->Fetch())
{
    $ids[] = $ar_sales['ID']; // сохраняем все id
}
$orderId =  $ids[count($ids)-1]; // последний элемент массива
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@ArmBar
Так все таки получше будет, запрос с limit побыстрее, чем без него

$orderData = \Bitrix\Sale\Order::getList([
	'select' => ['ID'],
	'filter' => ['=USER_ID' => $USER->GetID()],
	'order' => ['ID' => 'DESC'],
	'limit' => 1
]);
if ($order = $orderData->fetch())
{
	$lastOrderId = $order['ID'];
}
Ответ написан
Комментировать
402d
@402d
начинал с бейсика на УКНЦ в 1988
Правильнее разобраться с классом CSaleOrder.
первый параметр GetList() это что ?
и там точно нет 3его или 4го параметра ?
в методе проверить указана ли явно сортировка?
а то что товары возвращаются от первого к последнему просто случайность.

Eсли из цикла просто убрать break, то получите последний.
Но это если через выше перечисленные вопросы не найдете, как
заставить метод вернуть только один нужный заказ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы