1

由于我的代码中的一行,引发了异常:

$acadObj = $em->getRepository('ProjectMyBundle:Academie')->find($acadDeleg);

where$acadDeleg是我从数据源中检索的字符串。

一般官方文档使用find($id)where $idis a number(整数)。为此,我问是否可以使用字符串。问题是我有一个表,我必须从中获取一个值,然后与另一个表进行比较,这样我就可以创建一个对象。

作为记录,$acadDelegAcademieEntity的主键

编辑 :

异常消息:

The Exception message :

An exception occurred while executing 'SELECT t1.codeLieu AS codeLieu2, t1.nomLieu AS nomLieu3, t1.latLieu AS latLieu4, t1.lngLieu AS lngLieu5 FROM Academie t1 WHERE t0.codeLieu = ?' with params {"1":"A"}:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.codeLieu' in 'where clause'

学院定义:

<?php

namespace PFA\SIGBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Academie
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="PFA\SIGBundle\Entity\AcademieRepository")
 */
class Academie extends Lieu
{

}

刘定义:

<?php

namespace PFA\SIGBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Lieu
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="PFA\SIGBundle\Entity\LieuRepository")
 */
abstract class Lieu
{

/**
 * @var string
 *
 * @ORM\Column(name="codeLieu", type="string", length=20)
 * @ORM\Id
 */
private $codeLieu;

/**
 * @var string
 *
 * @ORM\Column(name="nomLieu", type="string",nullable=true)
 */
private $nomLieu;

/**
 * @var float
 *
 * @ORM\Column(name="latLieu", type="float", nullable=true)
 */
private $latLieu;

/**
 * @var float
 *
 * @ORM\Column(name="lngLieu", type="float", nullable=true)
 */
private $lngLieu;
// getters and setters here...
}
4

1 回答 1

1

您的抽象类Lieu必须是MappedSuperclass.

您需要将Lieu定义更改为:

/**
 * Lieu
 *
 * @ORM\MappedSuperclass
 */
abstract class Lieu
{
  //[...]
}

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

于 2013-04-16T19:40:19.337 回答