Перейти к содержимому


Фотография
- - - - -

Сохранение � Лементов


Сообщений в теме: 13

#1 webinsight

webinsight

Отправлено 20 May 2020 - 09:43

Доброго времени суток
есть такая задача:

Апдейт нескольких полей в >100 элементах и сохранение их
все вроде бы ничего, но частенько информация новая записывается в элемент, но не сохраняется ( использую app->table->item->save)

Подскажите пожалуйста, может сталкивался кто? или может, есть способ сохранения массива элементов?


  • 0

#2 CB9TOIIIA

CB9TOIIIA

Отправлено 20 May 2020 - 09:48

т.е. в 1 айтеме 100 элементов?


  • 0

#3 webinsight

webinsight

Отправлено 20 May 2020 - 10:03

т.е. в 1 айтеме 100 элементов?

нет, есть, к примеру, 100 айтемов ( блюд), в каждом, есть 1 поле ( текстовое), где хранится json строка
в цикле прохожу по каждому из 100 блюд, обновляю текстовое поле и сохраняю


  • 0

#4 CB9TOIIIA

CB9TOIIIA

Отправлено 20 May 2020 - 10:14

ну нормально. Можно так - можно импортом.


  • 0

#5 webinsight

webinsight

Отправлено 20 May 2020 - 10:16

ну нормально. Можно так - можно импортом.

так проблема в том, что не сохраняются, фактически, новый json записывается в поле (видно в логе), но далее, элемент не сохраняется
импорт - не выход, ибо айтемы подтягиваются из стороннего api


Сообщение отредактировал webinsight: 20 May 2020 - 10:16

  • 0

#6 CB9TOIIIA

CB9TOIIIA

Отправлено 20 May 2020 - 10:18

$this->bindData(array('value' => $value));

Вручную сохранить - проверить массив - заменить - сохранить - проверить  айтем.


  • 0

#7 webinsight

webinsight

Отправлено 20 May 2020 - 10:51

$this->bindData(array('value' => $value));

Вручную сохранить - проверить массив - заменить - сохранить - проверить  айтем.

 

вручную не получится сохранить, нужно автоматически
записать информацию в поле могу, не работает конкретно  app->table->item->save
подозреваю, что это из-за большого кол-ва обращения к базе


Сообщение отредактировал webinsight: 20 May 2020 - 10:53

  • 0

#8 CB9TOIIIA

CB9TOIIIA

Отправлено 20 May 2020 - 11:01

как это вручную не получится? я говорю о том, может у Вас массив бит или неверный - поэтому и не отображается корректно.

 

Есть куча проектов - где по API получают данные - строят например нужный массив и биндится в БД - и все это например просто при обращении к айтему.


  • 0

#9 webinsight

webinsight

Отправлено 20 May 2020 - 11:15

как это вручную не получится? я говорю о том, может у Вас массив бит или неверный - поэтому и не отображается корректно.

 

Есть куча проектов - где по API получают данные - строят например нужный массив и биндится в БД - и все это например просто при обращении к айтему.

$app = App::getInstance('zoo');
	$product_to_edit = $app->table->item->get($productId);
	$product_category = array_search($product->parentGroup, $iikoCategoriesID);
	
	$iikoModifiers = $product->modifiers;
	$iikoGroupModifiers = $product->groupModifiers;
	foreach($iikoGroupModifiers as $modifier){
		foreach($modifier->childModifiers as $childModifier){
			$iikoModifiersIDs[]=$childModifier->modifierId;
		}
		
	}
	foreach($iikoModifiers as $modifier){
		$iikoModifiersIDs[]=$modifier->modifierId;
	}
	
	if(isset($iikoModifiersIDs)){
	foreach($iikoModifiersIDs as $ModifierID){
		foreach($jbzooModifiers as $Modifier){
			if($ModifierID == $Modifier->getElement('fa05ac26-7394-462d-a0fe-1e39a50611e5')->get('value')){
				$setModifiers[]=$Modifier->id;
			}
		}
	}	
	}
	
	$set_json  = $product_to_edit->getElement('e170bb72-1e82-43d3-9a70-ef38e9c717fe');
	$modifiers = $product_to_edit->getElement('04a8fa1b-afb6-4010-b5e9-9f63a1a3e838');	
	
	
	$presentCategories = JBModelItem::model()->getItemCategories($productId);
	$tempPresentCategories[]=$product_category;
	
	$app->category->saveCategoryItemRelations($product_to_edit, $tempPresentCategories);
	if(isset($setModifiers)){
		$modifiers->set('item', $setModifiers);
	}
	$product_to_edit->priority=$product->order;
	$set_json->set('value', json_encode($product));
	$app->table->item->save($product_to_edit);
	JBModelSearchindex::model()->updateByItem($product_to_edit, false); 

не совсем понял, как тут может быть бит массив, если я по айтему сохраняю, а беру айтем по id,разъясните пожалуйста
есть ли какой-то метод сохранения нескольких айтемов?


Сообщение отредактировал webinsight: 20 May 2020 - 11:19

  • 0

#10 CB9TOIIIA

CB9TOIIIA

Отправлено 20 May 2020 - 11:42

Я говорю о том, что вручную сделать "идеальный" айтем. Далее получить дампером JSON элемента - (*магия* с заменой нужных данных) и обратно.

 

http://forum.jbzoo.c...item-znachenie/


  • 0




Click to return to top of page in style!