Проблемы с отношениями базы данных с платформой Symfony - Невозможно получить TableMap для неопределенной таблицы - PullRequest
0 голосов
/ 08 мая 2009

В настоящее время разрабатывается приложение с использованием новейшей версии Symfony, полученной через PEAR. Это моя точная конфигурация схемы

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:

Проснувшиеся и осведомленные о вас, вероятно, заметили, что user_id в посте является внешним ключом для пользователя. Согласно определенному руководству; [quote title = Quote:] (столбцы, заканчивающиеся на _id, считаются внешними ключами, и связанная таблица автоматически определяется в соответствии с первой частью имени столбца). [/ quote]

Всякий раз, когда я пытаюсь создать ЛЮБЫЕ фильтры или ФОРМЫ (build-filters / build-forms / build-all), появляется следующее сообщение об ошибке.

>> 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(

Я также пытался определить foreignTable и foreignReference в своей схеме, но безуспешно. Это свежий Symfony-проект, созданный только для устранения этой ошибки. Я пытался использовать имена единственного и множественного числа для моих таблиц. Я делаю что-то ужасно неправильно, или это серьезная ошибка? Цени любой вклад, это сводит меня с ума!

У меня есть ветка форума в официальном сообществе Symfony, здесь: http://forum.symfony -project.org / index.php / m / 77979 / - были некоторые предложения (например, как я забыл использовать тильда и этот «пользователь» является предопределенным классом, но проблемы остаются решены [отредактировано] на данный момент.

Одно бесплатное объятие в Интернете, основные реквизиты и бесплатный космический челнок для могучей души, которая придумала решение! (отказ от ответственности: на самом деле нет бесплатного космического челнока)

1 Ответ

2 голосов
/ 08 мая 2009

Обновление: проблема уже решена! ... после бесчисленных часов отслеживания и отладки.

Проблема была вызвана префиксом TABLE, вручную закодированным в propel.ini, например:

; пользовательский префикс таблицы
propel.tablePrefix = mindmonkey_

Нет связи с schema.yml и propel.ini или чем-то в этом роде, поэтому все зависло. Из этого я делаю вывод: забудьте префиксы, просто используйте выделенную схему для каждого проекта ... Я просто использовал префикс как привычку, всегда делал - но никогда больше, если специально не указано иное!

...