Пытаюсь получить список заказов если заказ оформил нынешний пользователь или если у заказа и у пользователя совпадает EMAIL. При попытке получить список заказов со сложной логикой в выдаче появляются дубли заказов, которые нашлись по USER_ID, но при этом если в логике указать не OR, а AND, то всё работает как часы. Соответственно по результатам у заказа с ID 12 совпадает покупатель с id текущего юзера.
Результат:
| Код |
|---|
$arUser = CUser::GetByID($GLOBALS['USER']->GetId())->GetNext();
$orders = \Bitrix\Sale\Order::getList([
'select' => array(
'ID'
),
'filter' => [
'LOGIC' => 'OR',
['=PROPERTY_VAL.CODE'=>'EMAIL', '=PROPERTY_VAL.VALUE'=>$arUser['EMAIL']],
['ID'=>'12'],
],
'runtime' => [
new \Bitrix\Main\Entity\ReferenceField(
'PROPERTY_VAL',
'\Bitrix\sale\Internals\OrderPropsValueTable',
["=this.ID" => "ref.ORDER_ID"],
["join_type"=>"left"]
),
]
]);
$ordersList = array();
while ($arOrder = $orders->fetch()){
$ordersList[] = $arOrder;
}
echo '<pre>';
var_dump($ordersList);
echo '</pre>';
|
| Код |
|---|
array(27) {
[0]=>
array(1) {
["ID"]=>
string(2) "11"
}
[1]=>
array(1) {
["ID"]=>
string(2) "12"
}
[2]=>
array(1) {
["ID"]=>
string(2) "12"
}
[3]=>
array(1) {
["ID"]=>
string(2) "12"
}
[4]=>
array(1) {
["ID"]=>
string(2) "12"
}
[5]=>
array(1) {
["ID"]=>
string(2) "12"
}
[6]=>
array(1) {
["ID"]=>
string(2) "12"
}
[7]=>
array(1) {
["ID"]=>
string(2) "12"
}
[8]=>
array(1) {
["ID"]=>
string(2) "12"
}
[9]=>
array(1) {
["ID"]=>
string(2) "12"
}
[10]=>
array(1) {
["ID"]=>
string(2) "12"
}
[11]=>
array(1) {
["ID"]=>
string(2) "12"
}
[12]=>
array(1) {
["ID"]=>
string(2) "12"
}
[13]=>
array(1) {
["ID"]=>
string(2) "12"
}
[14]=>
array(1) {
["ID"]=>
string(2) "12"
}
[15]=>
array(1) {
["ID"]=>
string(2) "12"
}
[16]=>
array(1) {
["ID"]=>
string(2) "12"
}
[17]=>
array(1) {
["ID"]=>
string(2) "12"
}
[18]=>
array(1) {
["ID"]=>
string(2) "12"
}
[19]=>
array(1) {
["ID"]=>
string(2) "12"
}
[20]=>
array(1) {
["ID"]=>
string(2) "12"
}
[21]=>
array(1) {
["ID"]=>
string(2) "12"
}
[22]=>
array(1) {
["ID"]=>
string(2) "12"
}
[23]=>
array(1) {
["ID"]=>
string(2) "12"
}
[24]=>
array(1) {
["ID"]=>
string(2) "12"
}
[25]=>
array(1) {
["ID"]=>
string(2) "12"
}
[26]=>
array(1) {
["ID"]=>
string(2) "13"
}
} |