Problemas con las relaciones de la base de datos con el marco de Symfony: no se puede recuperar TableMap para una tabla indefinida

StackOverflow https://stackoverflow.com/questions/838815

Pregunta

Actualmente desarrollando una aplicación usando la versión más nueva de Symfony, obtenida a través de PEAR. Esta es mi configuración de esquema exacta

propel:

 user:
  id:
  name:     { type: varchar(255), required: true }
  level:    { type: integer, required: true, default: 1 }
  created_at:    

 post:
  id:
  title:     { type: varchar(255), required: true }
  post:      { type: longvarchar, required: true }
  user_id:   
  created_at:
  updated_at:

 comment:
  id:
  relation:  integer
  comment:   { type: varchar(300), required: true }
  nick:      { type: varchar(100), required: true }
  created_at:
  updated_at:

La persona despierta y consciente de usted probablemente haya notado que user_id en la publicación es una clave externa para el usuario. De acuerdo con la guía definitiva; [quote title = Quote:] (las columnas que terminan con _id se consideran claves foráneas, y la tabla relacionada se determina automáticamente de acuerdo con la primera parte del nombre de la columna). [/ quote]

Cada vez que intento crear CUALQUIER filtro o FORMULARIO (build-filter / build-forms / build-all) recibo el siguiente mensaje de error.

>> propel    generating form classes
  -----> Cannot fetch TableMap for undefined table: user.  Make sure you have the static MapBuilder registration code after your peer stub class definition. <------
[?php
/**
 * Post form base class.
 *
 * @package    ##PROJECT_NAME##
 * @subpackage form
 * @author     ##AUTHOR_NAME##
 * @version    SVN: $Id: sfPropelFormGeneratedTemplate.php 16976 2009-04-04 12:47:44Z fabien $
 */
class BasePostForm extends BaseFormPropel
{
  public function setup()
  {
    $this->setWidgets(array(
      'id'         => new sfWidgetFormInputHidden(),
      'title'      => new sfWidgetFormInput(),
      'post'       => new sfWidgetFormTextarea(),
      'user_id'    => new sfWidgetFormPropelChoice(

También he intentado definir el ForeignTable y ForeignReference en mi esquema, pero sin suerte. Este es un nuevo proyecto de Symfony, solo creado para depurar este error. He intentado usar nombres singulares y plurales para mis tablas. ¿Estoy haciendo algo terriblemente mal o es un error sólido? Agradezco CUALQUIER aportación, ¡esto me está volviendo loco!

Tengo un hilo de foro en la comunidad oficial de Symfony, aquí: http : //forum.symfony-project.org/index.php/m/77979/ : ha habido algunas sugerencias (como cómo olvidé usar una tilde y que "usuario" es una clase predefinida, pero el problema sigue siendo RESUELTO [editado] a partir de ahora.

¡Un abrazo gratuito a Internet, accesorios importantes y un transbordador espacial gratuito para el alma poderosa que encuentra una solución! (descargo de responsabilidad: en realidad no hay transbordador espacial gratuito)

¿Fue útil?

Solución

Actualización: ¡EL PROBLEMA SE HA RESUELTO! ... después de incontables horas de seguimiento y depuración.

El problema fue causado por un prefijo TABLE codificado manualmente en propel.ini como este:

; prefijo de tabla personalizado
propel.tablePrefix = mindmonkey_

No hay comunicación con schema.yml y propel.ini o algo así, por lo que todo falló. Mi conclusión de esto es: olvídate de los prefijos, solo usa un esquema dedicado para cada proyecto ... Acabo de usar el prefijo como un hábito, siempre lo hago, ¡pero nunca más a menos que me lo indiquen específicamente!

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