Pregunta

Pregunta relativa a la HABTM ha sido publicado en algunos buenos números en stackoverflow, pero todavía estoy buscando una solución a mi problema.

Estoy creando una aplicación que permite la creación de temas en base a un particular subcategoría.Mientras que la adición de un tema al usuario se le solicita etiquetas (en el mismo formulario).Ahora, cuando el usuario ha terminado de agregar etiquetas para el tema al hacer clic en el botón Añadir el tema se ha añadido correctamente pero las etiquetas no son.

He creado la tabla de combinación de ambos temas y etiquetas como tbl_tags_topics. (como se define en las convenciones de cakephp) y se define el 'hasAndBelongsToMany' matriz correctamente, tanto en los modelos de temas y etiquetas.

Lo pasos que me estoy perdiendo ahora.?

Tengo una pregunta más relacionado con esto, pero voy a publicar cuando voy a ser capaz de enviar las etiquetas relacionadas con un tema con éxito a la base de datos.(la funcionalidad es similar a la de stackoverflow las etiquetas de adición y adjuntar)

cualquier ayuda es muy apreciada., también quisiera saber de alguna buena tutoriales sobre HABTM si la encuentras.

Gracias

¿Fue útil?

Solución 2

Con la ayuda del Sr. Sorteo, Pude resolver mi problema. Aquí está el Enlace Eso describe el procedimiento completo de cómo lograr dicha funcionalidad en CakePHP. Este es un tutorial increíble para aprender más sobre la relación HBTM.

Para la versión 1.3 descubrí que esta técnica es útil. Aquí están los pasos:

Después de definir la matriz de relaciones HBTM en ambos modelos

Crea tu forma como esta

echo $form->create('Job');
echo $form->input('title');
echo $form->input('description');
echo $form->input('location');
echo $form->input('Category');//note the caps and single plural
$form->end('Submit');

y luego en el método add de controlador simplemente use el

saveall ($ this-> data)

y la tabla de unión se llenará con los registros requeridos también.

más información

Otros consejos

Cuando guarda uno de los campos, pasa parámetros como ese:

$this->Model->save(
    'Model' => array('id' => 1, 'name' => 'one random field)
);

Si tiene etiquetas, que es un hBtm, podría hacer lo siguiente:

$this->Model->save(
    'Model' => array('id' => 1, 'name' => 'one random field'),
    'Tag' => array('Tag' => array(1))
);

Sin embargo, hay un problema con esta característica nativa, es que cada vez que guarda su objeto, debe aprobar cada Etiqueta a la matriz guardada. De lo contrario, todos serán eliminados antes para que se lean.

Sin embargo, puede encontrar en la panadería, un complemento llamado asociaciones extendidas.

Usándolo, lo harías:

$this->Model->habtmAdd('Tag', 1, 1);

Donde el primer "1" es la ID de objeto del modelo. Y el segundo es la ID de objeto de la etiqueta.

Y para eliminar una etiqueta:

$this->Post->habtmDelete('Tag', 1, 1); 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top