Pregunta

En mi aplicación, las citas pertenecen a un producto, que a su vez pertenece a un material. Como no puedo obtener el modelo de producto, la matriz después de encontrar el material cuando se accede desde el modelo de cotización, he asociado la cita directamente con un material.

El problema que tengo ahora es que el material_id para la cotización debe guardar automáticamente en función del producto que se selecciona para la cotización

es decir, extrayendo el valor del producto. Material_id del producto seleccionado y guardándolo en el campo cita.material_id automáticamente antes de que la cotización se haya guardado en la base de datos.

Soy bastante nuevo en CakePhp. ¿Alguien sabe cómo se puede hacer esto?

EDITAR:

Aquí hay un ejemplo para ayudar a explicar. En mi modelo de cita puedo tener:

public function beforeSave($options) {
    $this->data['Quote']['material_id'] = 4;
    return true;
}

Pero necesito hacer algo más como esto que no funcione:

public function beforeSave($options) {
    $this->data['Quote']['material_id'] = $this->Product['material_id'];
    return true;
}
¿Fue útil?

Solución

Estoy sorprendido de que esto aún no se haya respondido correctamente ...

La respuesta de Oldskool es semicorrecta, pero no del todo correcta. El uso de "$ this-> cita" es incorrecto, ya que la función befefefefefefefefefefefefefefefafeo mismo reside en la clase de cita. Explicaré usando un ejemplo.

-> Tenemos un modelo Suscripción cual pertenece a a Plan de suscripciones

-> modelo Plan de suscripciones tiene muchos Suscripciones

Para acceder al Plan de suscripciones datos en un a menos función en el Suscripción modelo, harías lo siguiente:

public function beforeSave($options = array()){
    $options = array(
        'conditions' => array(
            'SubscriptionsPlan.subscriptions_plan_id' => $this->data[$this->alias]['subscriptions_plan_id']
        )
    );

    $plan = $this->SubscriptionsPlan->find('first', $options);

    //REST OF BEFORE SAVE CODE GOES HERE
    return true;
}

Otros consejos

Probablemente debería funcionar usando un hallazgo.

public function beforeSave($options) {
    // Assuming your Product model is associated with your Quote model
    $product = $this->Quote->Product->find('first', array(
        'conditions' => array(
            'Product.material_id' => $this->data['Quote']['material_id']
        )
    ));
    $this->data['Quote']['material_id'] = $product['material_id'];
    return true;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top