如何使用doctrine解决symfony 1.4上“未找到列”的冲突?

时间:2013-06-03 20:31:20

标签: doctrine symfony-1.4

对不起这个非常具体的问题,我有几次这个问题,我的解决方案(不是最好的是重命名表并做更多的东西),显然它不是一个真正的解决方案,这次我再次遇到同样的情况,有一张桌子,我甚至没有操纵,我想知道以前是否有人遇到过同样的问题。

使用symfony 1.4和doctrine,我从查询不相关的表中得到此错误

Column not found: 1054 Unknown column 'o.training_id' in 'field list'

我真的不知道什么是错的,在我的schema.yml我有类似的东西

OhrmTraining:
  connection: doctrine
  tableName: training
  columns:
    id_training:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    name:
      type: string(60)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
TrainingDetail:
  connection: doctrine
  tableName: training_detail
  columns:
    id_training_detail:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      autoincrement: true
    training:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: false
      notnull: true
      autoincrement: false
   relations:
    OhrmTraining:
    local: training
    foreign: id_training
    type: one

与其他表详情相关

像这样

TrainingDetail:
  connection: doctrine
  tableName: training_detail
  columns:
    id_training_deetail:
    type: integer(4)
    fixed: false
    unsigned: false
    primary: true
    autoincrement: true
  training:
    type: integer(4)
    fixed: false
    unsigned: false
    primary: false
    notnull: true
    autoincrement: false
relations:
  Training:
  local: training
  foreign: id_training
  type: one

我认为这是正确的,但在我的学说/基础/ BaseTraining.class中我最后有这样的东西(用于训练)

public function setUp()
{
    parent::setUp();
    $this->hasMany('TrainingDetail', array(
         'local' => 'id', <--- this should be the id_training_detail??
         'foreign' => 'training_id')); <--- this should be training?

我不知道为什么他们会这样,或者他们应该是那样的......有人可以帮助我吗?

我为

更改了它们
public function setUp()
{
    parent::setUp();
    $this->hasMany('TrainingDetail', array(
         'local' => 'id_training',
         'foreign' => 'training'));

仍然,我得到了错误,如果我制作翻拍模型,那么一切都将消失

没有简单的方法可以从DB创建schema.yml文件吗?

编辑: 抛出异常的查询是这个

 $query = Doctrine_Query::create()
    ->from('Times a')
    ->where('a.employee_id = ?', $employeeId)
    ->orderBy('a.start_date ASC');
    $results = $query->execute();

我检查了员工的基础,它与培训没有关系,它有培训细节......但不是直接培训,我重新创建了我的模型10次仍然是相同的

1 个答案:

答案 0 :(得分:2)

“仍然,我得到了错误,如果我制作翻拍模型,那么一切都将消失”

这是因为您通过基类编辑了设置,在构建模型时基类总是被覆盖。

“没有简单的方法可以从DB创建schema.yml文件?”

这没有意义。很明显,您可以从架构生成架构文件,否则您将没有架构文件。

根据给定的模式文件,关系的位置显示正确。根据{{​​3}}:

“指定关系时,只需要在外键所在的末尾指定关系。解析模式文件时,它会反映关系并自动构建另一端。如果指定另一端手动关系,自动生成将无效。“

在构建模型文件时,doctrine将在基类中正确配置setUp方法,因此您不需要这样做。如果要更改关系,请通过模式文件进行更改,然后重建模型文件。

我怀疑您遇到的问题在于如何通过DQL或模型引用构建查询,因为您发布了错误:

“找不到列:'字段列表'中的1054未知列'o.training_id'”

- 编辑 -

根据错误和您的查询,您可以指定要选择的列,请尝试以下操作:

$query = Doctrine_Query::create()
    ->select('a.*')
    ->from('Times a')
    ->where('a.employee_id = ?', $employeeId)
    ->orderBy('a.start_date ASC');

$results = $query->execute();