В PrestaShop, если вы хотите, чтобы идентификатор конкретного объекта (категория, продукт, заказ и т. Д.) Игнорировался приращением SQL при вставке БД, необходимо установить для параметра force_id
значениеtrue.
Вот минималистский пример, который работает для категории:
$category = new Category();
$category->id = 42;
$category->force_id = true;
$category->is_root_category = false;
$category->name = array((int)Configuration::get('PS_LANG_DEFAULT') => 'Test');
$category->link_rewrite = array((int)Configuration::get('PS_LANG_DEFAULT') => 'test');
$category->id_parent = Configuration::get('PS_HOME_CATEGORY');
$category->add();
Это будет работать со всеми версиями PrestaShop и может быть найдено в классе ObjectModel (родительский класс для всех объектов):
/** @var bool Enables to define an ID before adding object. */
public $force_id = false;
Затем проверяется непосредственно перед добавлением объекта в БД в том же классе:
public function add($auto_date = true, $null_values = false)
{
if (isset($this->id) && !$this->force_id)
unset($this->id);
...
Надеюсь, это поможет!