Jump to content

Edit History

Prestafan33

Prestafan33

Me ocurre algo rarísimo, que me tiene totalmente descolocado con la versión 1.7.6.1 de PS. Lo explico a continuación, a ver si a alguien se le ocurre cuál puede ser el motivo, porque a mí ya se me acaban las ideas:

Lo que ocurre es lo que digo en el título, cuando se cambia la combinación por defecto de un producto, el cambio no se traslada a la base de datos. Para ser exactos, en  la tabla de atributos sí que queda reflejada la nueva combinación por defecto, pero en las tablas de productos (ps_product y ps_product_shop), en el campo "cache_default_attribute" no se refleja el cambio.

He rastreado el código de la clase Product y he visto que el cambio debería producirse en el método updateDefaultAttribute, cuyo código es éste:

public static function updateDefaultAttribute($id_product)
{
  $id_default_attribute = (int) Product::getDefaultAttribute($id_product, 0, true);

  $result = Db::getInstance()->update('product_shop', array(
  	'cache_default_attribute' => $id_default_attribute,
  ), 'id_product = ' . (int) $id_product . Shop::addSqlRestriction());

  $result &= Db::getInstance()->update('product', array(
  	'cache_default_attribute' => $id_default_attribute,
  ), 'id_product = ' . (int) $id_product);

  if ($result && $id_default_attribute) {
 	 return $id_default_attribute;
  } else {
  	return $result;
  }
}

El método se ejecuta al modificar el producto y el valor de $id_default_attribute que se obtiene en la primera línea del método es el correcto (lo he dumpeado), pero simplemente no se traslada a las tablas de la base de datos. Es más, he intentado forzarlo añadiendo esto dentro del método:

$sql = 'UPDATE ps_product SET cache_default_attribute='.$id_default_attribute.' WHERE id_product='.$id_product;
Db::getInstance()->execute($sql);
exit();

... pero simplemente no actualiza la base de datos y no se modifica el valor que tiene en la columna cache_default_attribute. Si ejecuto exactamente la misma consulta desde el PHPMyAdmin se realizan los cambios correctamente.

¿A alguien se le ocurre por qué puede ser?

Prestafan33

Prestafan33

Me ocurre algo rarísimo, que me tiene totalmente descolocado con la versión 1.7.6.1 de PS. Lo explico a continuación, a ver si a alguien se le ocurre cuál puede ser el motivo, porque a mí ya se me acaban las ideas:

Lo que ocurre es lo que digo en el título, cuando se cambia la combinación por defecto de un producto, el cambio no se traslada a la base de datos. Para ser exactos, en  la tabla de atributos sí que queda reflejada la nueva combinación por defecto, pero en las tablas de productos (ps_product y ps_product_shop), en el campo "cache_default_attribute" no se refleja el cambio.

He rastreado el código de la clase Product y he visto que el cambio debería producirse en el método updateDefaultAttribute, cuyo código es éste:

public static function updateDefaultAttribute($id_product)
{
  $id_default_attribute = (int) Product::getDefaultAttribute($id_product, 0, true);

  $result = Db::getInstance()->update('product_shop', array(
  	'cache_default_attribute' => $id_default_attribute,
  ), 'id_product = ' . (int) $id_product . Shop::addSqlRestriction());

  $result &= Db::getInstance()->update('product', array(
  	'cache_default_attribute' => $id_default_attribute,
  ), 'id_product = ' . (int) $id_product);

  if ($result && $id_default_attribute) {
 	 return $id_default_attribute;
  } else {
  	return $result;
  }
}

El método se ejecuta al modificar el producto y el valor de $id_default_attribute que se obtiene en la primera línea del método es el correcto (lo he dumpeado), pero simplemente no se traslada a las tablas de la base de datos. Es más, he intentado forzarlo añadiendo esto dentro del método:

$sql = 'UPDATE ps_product SET cache_default_attribute='.$id_default_attribute.' WHERE id_product='.$id_product;
Db::getInstance()->executeS($sql);
exit();

... pero simplemente no actualiza la base de datos y no se modifica el valor que tiene en la columna cache_default_attribute. Si ejecuto exactamente la misma consulta desde el PHPMyAdmin se realizan los cambios correctamente.

¿A alguien se le ocurre por qué puede ser?

Prestafan33

Prestafan33

Me ocurre algo rarísimo, que me tiene totalmente descolocado con la versión 1.7.6.1 de PS. Lo explico a continuación, a ver si a alguien se le ocurre cuál puede ser el motivo, porque a mí ya se me acaban las ideas:

Lo que ocurre es lo que digo en el título, cuando se cambia la combinación por defecto de un producto, el cambio no se traslada a la base de datos. Para ser exactos, en  la tabla de atributos sí que queda reflejada la nueva combinación por defecto, pero en las tablas de productos (ps_product y ps_product_shop), en el campo "cache_default_attribute" no se refleja el cambio.

He rastreado el código de la clase Product y he visto que el cambio debería producirse en el método updateDefaultAttribute, cuyo código es éste:

public static function updateDefaultAttribute($id_product)
{
  $id_default_attribute = (int) Product::getDefaultAttribute($id_product, 0, true);

  $result = Db::getInstance()->update('product_shop', array(
  	'cache_default_attribute' => $id_default_attribute,
  ), 'id_product = ' . (int) $id_product . Shop::addSqlRestriction());

  $result &= Db::getInstance()->update('product', array(
  	'cache_default_attribute' => $id_default_attribute,
  ), 'id_product = ' . (int) $id_product);

  if ($result && $id_default_attribute) {
 	 return $id_default_attribute;
  } else {
  	return $result;
  }
}

El método se ejecuta al modificar el producto y el valor de $id_default_attribute que se obtiene en la primera línea del método es el correcto (lo he dumpeado), pero simplemente no se traslada a las tablas de la base de datos. Es más, he intentado forzarlo añadiendo esto dentro del método:

$sql = 'UPDATE ps_product SET cache_default_attribute='.$id_default_attribute.' WHERE id_product='.$id_product;
Db::getInstance()->executeS($sql);
exit();

... pero simplemente no actualiza la base de datos y no se modifica el valor que tiene en la columna cache_default_attributo. Si ejecuto exactamente la misma consulta desde el PHPMyAdmin se realizan los cambios correctamente.

¿A alguien se le ocurre por qué puede ser?

×
×
  • Create New...