【问题标题】:Column not found error in Criteria标准中未找到列错误
【发布时间】:2011-07-21 08:26:23
【问题描述】:

我正在做一个 symfony 项目,我需要查询多对多关系,所以我创建了这个基于标准的函数来查询数据库:

    //Create Criteria Object
    $c1 = new Criteria();
    //Selecting the rows in the link table that matches the Table1 id (parameter)
    $c1->add(LinktablePeer::TBL1_CODIGO,$parameter,Criteria::EQUAL);
    //Selecting the rows in Table2 that matched with the last query
    $c1->addJoin(LinktablePeer::TBL2_CODIGO,Table2Peer::TBL2_CODIGO);
    $list = LinktablePeer::doSelect($c1);

但它给我带来了这个奇怪的错误

[包装:SQLSTATE[42S22]:未找到列:1054 未知列 '字段列表'中的'link_table.ID']

很奇怪,因为我在该表中没有名为 ID 的列。为什么会这样?我该如何解决?

换句话说就是问题:

php symfony propel:build-model 命令是否有一个选项可以防止为那些没有主键的表生成“ID”列? 谢谢你的时间;)

【问题讨论】:

  • 我知道不是解决方案,但是测试代码,我发现在 BaseLinkTablePeer 类中有一个名为 ID 的属性,并且注释了对该属性的所有引用,该错误不会出现。这可能是一个自动生成的属性,应该是主键吗?
  • 您的表中有主键吗?我的意思是唯一标识记录的字段(属性:primaryKey: true)。
  • 不,它是一个链接表,所以它的主键是链接表的主键的组合。我该如何指定?
  • 尝试在这2个字段中添加2个主键属性:tbl_codigo: { type: integer, required: true, primaryKey: true, foreignClass: Table1, foreignReference: id, onDelete: CASCADE }tb2_codigo: { type: integer, required: true, primaryKey: true, foreignClass: Table2, foreignReference: id, onDelete: CASCADE }
  • 如果我直接从 schema.yml 创建模型,这将是解决方案。问题是我从现有的 SQL 数据库生成了模式,并且在这个模型中有很多这样的链接表导致错误,所以手动修改模式中的所有链接表不是解决方案。我要求propel:build-model 命令的配置选项,如果未在架构中定义,该选项会阻止生成主键。

标签: mysql symfony1 criteria propel


【解决方案1】:

我发现问题是转储命令任务试图在我的 mysql 数据库中导出视图。 当我使用 -classes="..." 专门定义要导出的表时,错误消失了。

例如:

symfony propel:data-dump --classes="{table},{tablew},..."  fixtures.yml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2018-04-14
    • 2016-12-31
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多