Problemas con las relaciones de la base de datos con el marco de Symfony: no se puede recuperar TableMap para una tabla indefinida
-
22-07-2019 - |
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)
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!