Pregunta

Tengo que modificar una sección de administración para alertas de stock. Normalmente para un solo producto hay una recuperación de un cliente registrado que se ha suscrito a las alertas de esta función:

protected function _prepareCollection()
{
    $productId = $this->getRequest()->getParam('id');
    $websiteId = 0;
    if ($store = $this->getRequest()->getParam('store')) {
        $websiteId = Mage::app()->getStore($store)->getWebsiteId();
    }
    $collection = Mage::getModel('productalert/stock')
        ->getCustomerCollection()
        ->join($productId, $websiteId);
    $this->setCollection($collection);
    return parent::_prepareCollection();
}

Esto (para lo que he entendido) haga una consulta en la tabla Product_alert_stock que tiene las siguientes columnas:

alert_stock_id, customer_id, product_id, website_id, add_date, send_date, send_count, status  

y luego únase a él con la tabla de clientes para recuperar los nombres de los clientes.

Bueno, hemos creado una tabla similar para usuarios invitados (no registrados), product_alert_stock_guest, con las siguientes columnas:

alert_stock_id, guest_email, product_id, website_id, add_date, send_date, send_count, status

Como puede ver, la diferencia es la columna Guest_Email que reemplaza a Customer_ID. ¿Es posible unir (o hacer algo similar) estas dos tablas y luego mostrarlas en la misma cuadrícula?

gracias

Luca


@Jakethefish Al final no hice una unión, pero recuperé objetos de alerta de acciones de invitados en una alerta de acciones similar, configuré el campo de correo electrónico por setData ('correo electrónico', $ item-> getData ('correo electrónico') ), y luego los agregué a $ COLLECCIÓN por AddItem. Tengo un error: Mage :: Exception ('Mage_eav', 'Intente agregar Agregar un objeto no válido') Cuando hago un registro de elementos de alerta de stock regulares, tengo mucha información: http://pastebin.com/z7npnjrhEn su lugar, con un elemento de alerta de stock de invitados personalizado, tengo esto: http://pastebin.com/kkcteqehEntonces, el problema es que necesito una instancia MAGE_CUSTOMER_MODEL_CUSTOMER para la adición. Podría crear uno pero:

1) Puedo llenar los atributos de esa instancia con métodos normales como Setfield (estoy mirando la API en este momento y no veo nada así)

2) Incluso si puedo llenar los atributos, ¿qué sucede si configuro campos en blanco?

¿Fue útil?

Solución

Magento proporciona métodos como:

joinAttribute
joinField
joinTable

Pero las tablas unidas deberían tener una identificación similar.

Basado en estos 2 enlaces 1 y 2

Prueba algo como esto:

$selectFoo = Mage::getResourceModel('model/foo')->getSelect();
$selectBar= Mage::getResourceModel('model/bar')->getSelect();
$mergedFooBar = $selectFoo->union(array($selectBar));

O puede agregar elemento a la colección:

$collection->addItem($item);

Pero, tiene 2 clases diferentes y no quiero cómo se fusionarán en una sola colección, supongo que si desea unir 2 entidades diferentes, debe hacer que esas 2 subclase una tercera clase, que negocia la diferencia entre el correo electrónico y customer_id.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top