уже часа 3 бьюсь не могу никак осилить. Как в json мне вставлять модели?
// Получение остатков из данных
$ostatki = $data['Остатки'];
foreach ($ostatki as $ostatok) {
// Получение модели и размера из текущего элемента остатков
$model = $ostatok['Модель'];
$razmer = $ostatok['ПолныйРазмерРост'];
// Объединение модели и размера
$modelRazmer = $model . $razmer;
// Поиск товара по модели в поле TV с ID = 3 и шаблоне с ID = 4
$query = $modx->db->select(
'contentid',
$modx->getFullTableName('site_tmplvar_contentvalues'),
"tmplvarid=3 AND LOWER(value) = '" . strtolower($model) . "'"
);
$contentId = $modx->db->getValue($query);
if (!$contentId) {
continue; // Пропускаем текущую итерацию, если товар не найден
}
// Проверка существования записи в MultiTV razmer_item с указанной моделью и размером
$query = $modx->db->select(
'contentid, value',
$modx->getFullTableName('site_tmplvar_contentvalues'),
"tmplvarid = 23 AND contentid = $contentId"
);
$row = $modx->db->getRow($query);
if ($row) {
// Обновление существующей записи в MultiTV razmer_item
$value = json_decode($row['value'], true);
$found = false;
// Поиск существующей записи с указанной моделью и размером
foreach ($value['fieldValue'] as &$field) {
$modelRazmerExisting = $field['model'] . $field['razmer'];
if ($modelRazmerExisting === $modelRazmer) {
// Обновление значения поля sklad
$field['sklad'] = $ostatok['Количество'];
$found = true;
break;
}
}
if ($found) {
// Обновление записи с обновленным значением
$modx->db->update(
['value' => json_encode($value)],
$modx->getFullTableName('site_tmplvar_contentvalues'),
"contentid = $contentId"
);
}
} else {
// Создание новой записи в MultiTV razmer_item
list($modelNew, $razmerNew) = explode('.', $modelRazmer, 2); // Разбиение строки на два разных поля
$modelRazmerValue = [
'model' => $modelNew,
'razmer' => $razmerNew,
'sklad' => $ostatok['Количество'],
'magazin' => '',
];
// Вставка записи в базу данных
$modx->db->insert(
[
'tmplvarid' => 23,
'contentid' => $contentId,
'value' => json_encode([
'fieldValue' => [$modelRazmerValue], // Обёртка элемента в массив
'fieldSettings' => ['autoincrement' => 1],
]),
],
$modx->getFullTableName('site_tmplvar_contentvalues')
);
}
} а вот и массив как они приходят Array
(
[Остатки] => Array
(
[0] => Array
(
[Модель] => 1067.2.3F
[Размер] => 42
[ПолныйРазмерРост] => 164-84
[Количество] => 8
[ФлагВыгружатьНаСайт0_0] =>
)
[1] => Array
(
[Модель] => 1067.2.3F
[Размер] => 42
[ПолныйРазмерРост] => 170-84
[Количество] => 4
[ФлагВыгружатьНаСайт0_0] =>
)
[2] => Array
(
[Модель] => 1067.2.3F
[Размер] => 44
[ПолныйРазмерРост] => 164-88
[Количество] => 1
[ФлагВыгружатьНаСайт0_0] =>
) берет только 1 размер первый...
Советую ознакомиться: evoSearch
Зачем вообще поиск?
Советую ознакомиться: evoSearch
Нельзя тупо вставлять, там еще с другого обмена остатки на магазинах придут вот сюда 'magazin' => '',
вот похожий код для заполнения multitv Там в массив элементы добавляются $equipArr['fieldValue'][] = $eqTmpArr;
+Спасибо. Попробую.
Обсуждают сегодня