【问题标题】:Doctrine query in Symfony 1.4, not sure what I am doing wrong hereSymfony 1.4 中的教义查询,不确定我在这里做错了什么
【发布时间】:2012-04-06 02:10:15
【问题描述】:

我有一个这样的查询:

$fields = Doctrine_Core::getTable('model_1')->findByColumnId($id); 

对字段进行 var_dump,并按应有的方式检索数据;

接下来,我做这个

foreach($fields as $field)
{
 $newerFields[$field->getColumnId()] =
 Doctrine_Core::getTable('model2')->findByColumn2Id($field->getColumnId());
}

我对每个 $newerFields[$field] 进行了一个 var_dump,它确实会产生应有的结果。接下来我尝试这样做:

foreach($newerFields as $newerField)
{
 echo  $newerField->getColumn3();
}

但这会吐出: 在第 69 行的 actions.class.php 中调用未定义的方法 Doctrine_Collection::getColumn3()

我无法解决这个问题,并且在思考如何完成它时感到心慌。谁能帮我找出问题所在?

【问题讨论】:

  • 如果是关系表应该使用leftJoin()
  • 这是一个关系表,但我不明白为什么在这种情况下我应该使用 leftJoin

标签: php symfony-1.4 doctrine-1.2


【解决方案1】:

您的findByColumn2Id 返回一个Doctrine_Collection,因为findBy 总是返回一个集合(如果您没有在表文件中定义它),即使只有一个结果。如果您想检索一个结果,请改用findOneBy

否则,您将不得不循环 newerFieldschilds 来检索数据:

// array of Doctrine_Collection
foreach($newerFields as $newerFieldCollection)
{
  foreach($newerFieldCollection as $newerField)
  {
    echo $newerField->getColumn3();
  }
}

【讨论】:

  • 谢谢,我自己解决了这个问题并循环使用它是解决方案,因为我正在查看一组记录。
猜你喜欢
  • 2017-09-29
  • 2016-07-04
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2013-06-28
  • 2023-01-19
相关资源
最近更新 更多